Corrigir o problema do menu Iniciar que deixa de responder no Windows Server em RDS

Em alguns servidores Windows num ambiente RDS, o menu Iniciar pode deixar de funcionar: torna-se impossível de abrir, nenhum clique responde, impedindo os utilizadores de realizar as suas tarefas diárias. Este problema por vezes afeta todo o RDS farm e persiste mesmo após uma reinicialização ou a instalação de atualizações.

A causa está normalmente relacionada com corrupção ou com a acumulação excessiva de regras de firewall no registo do Windows, o que impede o processo StartMenuExperienceHost de funcionar corretamente. Felizmente, existe uma solução simples e eficaz para corrigir este problema e restaurar imediatamente o menu Iniciar para todos os utilizadores.

Identifique o problema

Resumindo, quando pressiona o botão Iniciar, não acontece nada.

Abra o editor de registo e verifique as seguintes chaves:

  • HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules
  • HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\RestrictedServices\Configurable\System
  • HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\RestrictedServices\AppIso\FirewallRule

Como pode ver, existem vários milhares de sequências de valores em cada chave que correspondem a regras na firewall do Windows.

Faça cópias de segurança das chaves de registo.

Antes de limpar o registo, faremos um backup dos dados por dois motivos:

  • Restaure os dados se não resolver o problema ou se causar outros comportamentos indesejáveis.
  • Analise os valores para descobrir porque existem tantas regras de firewall.

Como criar uma pasta de cópia de segurança na raiz da unidade C.

Abra uma janela do PowerShell como administrador; para tal, clique com o botão direito do rato no botão Iniciar e clique em Windows PowerShell (admin).

Introduza o seguinte comando para realizar o backup:

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

Aguarda-se a conclusão do processo de salvamento; para mim, demorou quase uma hora!

Como podem ver abaixo, o meu ficheiro de cópia de segurança tem 430 MB, o que já começa a ser muito para um ficheiro de texto.

Apagar chaves de registo

Agora, vamos proceder à eliminação das chaves no registo; introduza os seguintes comandos:

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

Também aqui terá de esperar algumas dezenas de minutos…

Após a eliminação das chaves, poderá aceder novamente ao menu Iniciar sem ter de reiniciar o servidor.

Diagnosticar a causa

Para compreender por que razão estão a ser criados valores no registo, abra o ficheiro de cópia de segurança e analise os valores para descobrir o motivo.

Esta etapa será específica para cada ambiente.

Configure o Windows para eliminar regras quando o utilizador fizer logout.

É possível eliminar automaticamente as regras quando o utilizador faz logout, adicionando a seguinte chave de registo:

# Remove firewall rules users at logoff
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy" -Type DWord -Name DeleteUserAppContainersOnLogoff -Value 1 -ErrorAction SilentlyContinue

Automatize a limpeza

Se não conseguir identificar a causa e não quiser que este bloqueio volte a ocorrer, é possível criar uma tarefa agendada que será executada no arranque e limpará o registo.

Para tal, crie uma tarefa agendada que execute um script PowerShell contendo as 3 linhas anteriores.

Romain Drouche
Arquiteto de Sistemas | MCSE: Infraestrutura Essencial
Especialista em infraestrutura de TI com mais de 15 anos de experiência na área. Atualmente, como Gerente de Projetos de Sistemas e Redes e especialista em Segurança de Sistemas de Informação (SSI), utilizo minha expertise para garantir a confiabilidade e a segurança de ambientes tecnológicos.

Deixe um comentário