开始菜单在 Windows Server RDS 上不起作用(无响应)

有时,用户会报告运行 Windows Server 2022 或 2019 的 RDS 主机上的“开始”菜单或任务栏问题。当用户在终端会话中单击“开始”按钮时,菜单不会打开,或者 RDP 会话冻结并变得无响应。

开始菜单界面和用户交互由两个进程管理:Explorer.exe和StartMenuExperienceHost.exe。从任务管理器重新启动它们可能会快速解决一次性问题。

更常见的是,“开始”菜单按钮在 RDS 场中的主机上不起作用的问题始终会发生。这通常伴随着多个带有事件 ID 的 DCOM 服务器错误10001在事件查看器 -> 系统日志中,指向 Microsoft Store 应用程序。

对于“开始”菜单在用户会话中不起作用的问题,一种可能的解决方案是重新注册有问题的 Microsoft Store 应用程序包。由于“开始”按钮不起作用,请使用以下命令打开 PowerShell 控制台Win+X键盘快捷键。运行命令:

Add-AppxPackage -Register "C:WindowsSystemAppsShellExperienceHost_cw5n1h2txyewyAppxManifest.xml" -DisableDevelopmentMode

或者,立即重新注册所有 Microsoft Store 应用程序:

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

如果这不能解决问题,或者只能暂时解决问题,请检查以下注册表项的内容:

  • HKLMSYSTEMCurrentControlSetServicesSharedAccessParametersFirewallPolicyRestrictedServicesAppIsoFirewallRules
  • HKLMSYSTEMCurrentControlSetServicesSharedAccessParametersFirewallPolicyFirewallRules

就我而言,我发现数千条 Windows Defender 防火墙规则每次用户登录和注销时,都会为 Microsoft Store 应用程序 (APPX/MSIX) 创建这些规则,并且这些规则不会自动清除。

在 RDS 上使用用户配置文件磁盘 (UPD) 时经常会出现此问题。

每次用户启动 Microsoft Store 应用程序时,都会自动添加新的 Windows Defender 防火墙规则,但不会删除旧规则。大量的防火墙规则可能会导致开始菜单体验主机过程冻结。此进程负责在用户会话中显示“开始”菜单。要恢复 Windows Server 主机上“开始”菜单的功能,请清除这些 Windows Defender 防火墙规则。

Windows 防火墙中的大量重复规则可能会显着降低 Windows Server 上 RDS 和 RemoteApp 会话的性能。

首先,让我们备份包含防火墙规则的注册表项。这将使我们能够在出现问题时回滚到它。

reg export "HKLMSYSTEMCurrentControlSetServicesSharedAccessParametersFirewallPolicy" C:Backup_Firewall_Policy_rules.reg

PowerShell cmdlet 不能用于管理防火墙规则应用程序Iso注册表项,因为 Get-NetFirewallRule 命令看不到它们。因此,您需要直接从注册表中删除它们。

要清除注册表中的 MS Store 应用程序防火墙规则,请运行以下命令:

reg delete HKLMSYSTEMCurrentControlSetServicesSharedAccessParametersFirewallPolicyRestrictedServicesConfigurableSystem /va /f

reg delete HKLMSYSTEMCurrentControlSetServicesSharedAccessParametersFirewallPolicyRestrictedServicesAppIsoFirewallRules /va /f

这将清除自定义防火墙规则。

另外,检查注册表项下的规则数量HKLMSYSTEMCurrentControlSetServicesSharedAccessParametersFirewallPolicyFirewallRules。还可能存在大量与 Microsoft Store 应用相关的重复防火墙规则。不要删除此注册表项中的所有项目,因为这样做将删除所有 Windows 防火墙规则,包括默认规则。否则,您可能会失去对 Windows 主机的远程访问,包括对其远程桌面的访问。

了解更多:

因此,在清除这些规则之前,请创建具有必要的 Windows 防火墙规则的 GPO 并将其应用到主机以避免失去访问权限

使用以下命令恢复默认的 Windows 防火墙设置和规则:

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

要让 Windows 自动清除 Microsoft Store 应用在每个用户会话中创建的防火墙规则,请创建注销时删除用户应用程序容器RDS 服务器上的注册表参数并将其值设置为 1。要使用 PowerShell 创建注册表项,请运行:

New-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetServicesSharedAccessParametersFirewallPolicy" -Type DWord -Name DeleteUserAppContainersOnLogoff -Value 1

现在,当用户的会话结束时,为该用户创建的应用程序的防火墙规则将自动清除。

剩下的就是在服务器上重新注册 APPX 包:

Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register “$($_.InstallLocation)AppXManifest.xml”}