Не открывается (не отвечает) меню Пуск в Windows Server RDS

Периодически на RDS серверах с Windows Server 2022/2019 встречаются жалобы пользователей на работу Start Menu. При попытке нажать на кнопку Пуск в терминальной сессии ничего не происходит (меню не открывается), либо сама RDP сессия подвисает. Более того, кроме стартового меню, на панели задач перестают работать все элементы, которые открываются левой кнопкой мыши.

За отображение и функционал кнопки Пуск отвечают два процесса Explorer.exe и StartMenuExperienceHost.exe . Для быстрого решения разовой проблемы может помочь их перезапуск из Task Manager.

Зависает процесс StartMenuExperienceHost.exe - не открывается стартовое меню в Windows Server RDS

Но чаще всего проблема с зависающем Start Menu на серверах в RDS ферме возникает постоянно. При этом в журнале Event Viewer -> System начинают сыпаться множество ошибок от DCOM с Event ID 10001 и указанием на приложения Microsoft Store.

Ошибка DCOM с Event ID 10001

Для временного исправления проблемы с неработающим меню Пуск в сеансе пользователя может помочь перерегистрация проблемного APPX приложения. Чтобы открыть PowerShell консоль без кнопки Пуск (которая не открывается), вызовите меню сочетанием Win+X. Выполните команду:

Add-AppxPackage -Register "C:\Windows\SystemApps\ShellExperienceHost_cw5n1h2txyewy\AppxManifest.xml" -DisableDevelopmentMode

Либо можно перерегистрировать все приложения Microsoft Store:

Get-AppXPackage | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}

Get-AppXPackage | Foreach {Add-AppxPackage - перерегистрация APPX приложений Store

Если это не исправило проблему, или помогло но лишь временно, проверьте содержимое веток реестра:

HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\RestrictedServices\AppIso\FirewallRules
HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules

В моем случае здесь скопилось несколько тысяч правил Windows Defender Firewall, которые создавались для APPX/MSIX приложений MS Store при каждом входе и выходе каждого пользователя (и не очищались автоматически).

Тысячи правил Windows Defender Firewall созданы на RDS сервере приложениями Store

Проблема часто встречается при использовании профилей User Profile Disks (UPD).

При каждом запуске APPX приложения, автоматически добавляется правила файервола, причем старые правила не удаляются. Из-за такого количество правил файервола процесс StartMenuExperienceHost , который отвечает за отображение меню Пуск в сессии пользователя, начинает зависать. Для восстановления работоспособности меню Пуск нужно очистить эти правила файервола.

Огромное количество дублирующих правил в Windows Firewall существенно ухудшает производительность RDS и RemoteAPP на Windows Server.

Сначала создадим резервную копию ветки реестра с правилами файервола, к которой можно будет откатиться в случае проблем:

reg export "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy" C:\Backup_FirewallPolicy.reg

reg export бэкап реестра

Для правил из ветки AppIso нельзя использовать PowerShell командлеты для управления правилами файервола (команда Get-NetFirewallRule их не видит). Поэтому придется удалять их напрямую из реестра.

Теперь можно очистить ветки реестра с правилами файервола:

reg delete HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\RestrictedServices\Configurable\System /va /f
reg delete HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\RestrictedServices\AppIso\FirewallRules /va /f

Это очистит кастомные правила Firewall.

reg delete очистка правил файервола в реестре

Также проверьте количество правил в ветке HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules . Здесь также может быть значительное количество одинаковых правил файервола для APPX приложений Store. Целиком удалять содержимое этой ветки нежелательно, т.е. это полностью очистит все правила Windows Firewall, включая стандартные. В результате вы можете потерять удаленный доступ к серверу (в том числе RDP).

Поэтому перед очисткой этих правил, создайте GPO с нужными правилами файервола и примените ее к этому хосту, чтобы не потерять к нему доступ.

Чтобы пересоздать дефолтные правила Windows Firewall, выполните команду:

(New-Object -ComObject HNetCfg.FwPolicy2).RestoreLocalFirewallDefaults()

Чтобы Windows автоматически очищал правила Windows Firewall, которые создаются приложениями Microsoft Store в каждой пользовательской сессии, нужно создать на RDS сервере параметр реестра DeleteUserAppContainersOnLogoff со значением 1. Чтобы создать параметр реестра с помощью PowerShell, выполните:

New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy" -Type DWord -Name DeleteUserAppContainersOnLogoff -Value 1

Теперь при завершении сеанса пользователя, созданные для него правила файервола будут очищаться.

Осталось перерегистрировать APPX приложения:
Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register “$($_.InstallLocation)\AppXManifest.xml”}


Предыдущая статья Следующая статья


Комментариев: 0 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)