Windows Server 2022: iniciar programa automaticamente na conexão RDP (GPO “Start a program on connection”)

Quer iniciar automaticamente um aplicativo assim que o usuário abrir uma sessão RDP no Windows Server 2022 e, em vez disso, só aparece a Área de Trabalho? Este guia mostra como diagnosticar e corrigir o problema, com foco na GPO “Start a program on connection” e nos ajustes que fazem a diferença.

Índice

Visão geral

A diretiva Start a program on connection (Iniciar um programa na conexão) permite que o servidor execute um aplicativo assim que o usuário entra por RDP. É muito usada em cenários de quiosque, aplicações legadas, ambientes com sessão bloqueada ou quando se quer evitar que o usuário navegue pelo Explorer.

No Windows Server 2022, alguns administradores notam que, mesmo com a GPO aplicada e visível no RSOP, o programa não inicia: a sessão cai direto na Área de Trabalho. O comportamento, que funcionava no Windows Server 2012, pode ser diferente em 2022, especialmente para usuários locais (contas locais) em comparação a usuários de domínio.

O problema na prática

Exemplo real: a GPO foi definida para abrir o Calculator (C:\Windows\System32\calc.exe) para usuários que se conectam via RDP a um Windows Server 2022. A política aparecia no RSOP; porém, a sessão exibia apenas a Área de Trabalho. Curiosamente, o mesmo procedimento:

  • Funcionava no Windows Server 2012;
  • Funcionava para usuários de domínio no Windows Server 2022;
  • Falhava para usuários locais no Windows Server 2022.

Por que isso acontece no Windows Server 2022

O Windows Server 2022 trata a experiência de sessão RDP de forma mais estrita, em especial quando o servidor não está com o papel Remote Desktop Session Host (RDSH) instalado. Além disso, há diretivas que, quando habilitadas, sobrepõem o comportamento de iniciar um programa e forçam a exibição do desktop. Se a mesma configuração existir em Computer Configuration e User Configuration, a de Computer tem precedência e pode anular o que você definiu para o usuário.

Causas principais e como identificar

Diretivas conflitantes

Precedência: se a mesma configuração estiver presente em ambos os escopos, Computer Configuration vence User Configuration. Isso inclui a “Start a program on connection”.

Conflito direto: a diretiva Always show desktop on connection (Mostrar sempre a área de trabalho na conexão) sobrepõe “Start a program on connection”. Se ela estiver habilitada, o desktop abrirá, e não o seu aplicativo.

Como detectar: verifique o RSOP (rsop.msc) e o gpresult para confirmar qual escopo está prevalecendo e se a opção “Always show desktop on connection” aparece como Enabled.

Papel de servidor (RDSH) ausente

A política foi criada tendo como alvo sessões de Remote Desktop Session Host. Em servidores usados “apenas” para administração (sem RDSH), o comportamento pode ser inconsistente — sobretudo com contas locais. Em alguns casos, a sessão inicia o Explorer antes, e o aplicativo configurado não substitui o shell.

Como detectar: cheque os recursos do Windows para confirmar a presença do papel RDSH.

Cliente RDP configurado para iniciar programa

O mstsc.exe (ou arquivos .rdp) também pode solicitar o início de um programa (“Programs” → “Start the following program on connection”). Configurações no cliente podem conflitar com a GPO do servidor.

Como detectar: peça um teste com uma conexão limpa (sem “Start program” no cliente) e compare o resultado.

Diretórios de trabalho e caminhos

Alguns executáveis exigem diretório de trabalho (“Working directory”). Caminhos com espaços e variáveis de ambiente mal formatadas também causam falhas silenciosas.

Aplicativos que pedem elevação

Se o aplicativo estiver marcado para “Executar como administrador”, a inicialização automática pode ser bloqueada pela elevação/UAC. Prefira iniciar um atalho ou um launcher que não exija elevação imediata.

Comportamento e precedência das diretivas

Local da diretivaEscopoPrevalece sobreObservações
Computer ConfigurationMáquinaUser ConfigurationAplica-se a todos que entram nesse servidor.
User ConfigurationUsuárioPerde para configurações equivalentes em Computer.
Always show desktop on connectionMáquina/UsuárioStart a program on connectionSe habilitada, força a Área de Trabalho.

Procedimento de correção (passo a passo)

  1. Confirme o papel RDSH (opcional, mas recomendado) PowerShell Get-WindowsFeature RDS-RD-Server Se necessário: Install-WindowsFeature -Name RDS-RD-Server -IncludeManagementTools Se você usa o servidor como host de sessões para usuários, ter o RDSH instalado ajuda a garantir que a GPO se comporte como projetado.
  2. Escolha um único escopo para a GPO
    • Defina apenas em Computer ou em User. Evite duplicidade.
    • Se precisar de granularidade, prefira Computer e controle quem pode logar via RDP por grupos/ACL.
  3. Desabilite “Always show desktop on connection” No mesmo nó da GPO, deixe Not Configured ou Disabled. Essa opção, quando ativa, impede o início do aplicativo na conexão.
  4. Preencha “Program path and file name” e “Start in (Working directory)” Use caminhos robustos. Exemplos:
    • %SystemRoot%\System32\calc.exe (programa)
    • %SystemRoot%\System32 (diretório de trabalho)
  5. Padronize variáveis de ambiente Prefira %SystemRoot%, %ProgramFiles%, %ProgramFiles(x86)% em vez de caminhos absolutos quando possível.
  6. Atualize a política e reinicie a sessão gpupdate /force logoff Faça logon novamente via RDP para testar.
  7. Teste com o cliente RDP sem “Start program” As configurações do cliente podem sobrepor ou competir com a GPO. Garanta que o teste esteja “limpo”.

Matriz de decisão: onde configurar

CenárioRecomendaçãoMotivo
Servidor usado por muitos usuáriosConfigurar em ComputerAplicação consistente e menor chance de conflito.
Exceções por usuárioConfigurar em User (sem duplicar em Computer)Permite tratamento específico sem ser sobreposto.
Somente alguns grupos podem RDPComputer + controle de acessoGarante coerência por servidor e controle por grupo.
Ambiente RDS completoRDSH instalado + GPO em ComputerCompatibilidade com o design da política.

Boas práticas e recomendações complementares

PassoAção recomendadaPor quê?
1Verificar RDSH instalado (Server Manager → Add Roles and Features)A diretiva foi projetada para sessões RDS.
2Definir apenas um escopo (Computer ou User)Evita precedência indesejada.
3Desabilitar “Always show desktop on connection” se usar “Start a program on connection”Impede que a área de trabalho apareça no lugar do programa.
4Preencher “Working directory” quando o app exigirAlguns executáveis dependem do diretório inicial.
5Validar caminho (uso de %SystemRoot% quando possível)Minimiza erros de digitação ou variações de pasta.
6Usar gpupdate /force + logoff/logon para testarGarante aplicação imediata da GPO.
7Testar com RDP‑Client configurado para “Iniciar programa” desativadoEvita conflito na estação do usuário.

Como validar que deu certo

  1. RSOP e gpresult gpresult /h C:\Temp\GPO-RDP.html start C:\Temp\GPO-RDP.html Confirme que “Start a program on connection” está Enabled no escopo esperado e que “Always show desktop on connection” está Not Configured/Disabled.
  2. Verificação de registro (opcional) reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" reg query "HKCU\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" Procure valores relacionados ao programa inicial e ao diretório de trabalho. (Os nomes exatos podem variar conforme edição/idioma.)
  3. Eventos de sessão No Visualizador de Eventos, inspecione os logs de TerminalServices e RemoteConnectionManager para ver se há falhas ao iniciar o shell/aplicativo.

Exemplos práticos de configuração

Exemplo mínimo (Calculadora)

  • Program path and file name: %SystemRoot%\System32\calc.exe
  • Start in (Working directory): %SystemRoot%\System32

Exemplo com aplicativo de terceiros

  • Program: %ProgramFiles%\MinhaApp\bin\MinhaApp.exe
  • Working directory: %ProgramFiles%\MinhaApp\bin
  • Observação: se o app faz self-update ao iniciar, considere desabilitar a atualização automática ou apontar para um launcher estável.

Arquivo .RDP (para testes isolados)

Não use em produção para sobrepor a GPO, mas pode ajudar em testes:

alternate shell:s:C:\Windows\System32\calc.exe
shell working directory:s:C:\Windows\System32

Estudo de caso do autor

No servidor Windows Server 2022, a diretiva “Start a program on connection” estava habilitada tanto em Computer quanto em User. Além disso, “Always show desktop on connection” havia sido habilitada por engano. Após alinhar as definições (deixar apenas um escopo ativo e desabilitar “Always show desktop on connection”), o Calculator passou a abrir corretamente para usuários locais na conexão RDP.

Erros comuns e como evitá-los

  • Habilitar “Always show desktop on connection” junto com “Start a program on connection”: desative a primeira.
  • Duplicar a configuração em User e Computer: padronize para um único escopo.
  • Esquecer o “Working directory”: preencha sempre que o app precisar de arquivos relativos.
  • Configurar o cliente RDP para iniciar programa: pode conflitar; teste com o cliente “limpo”.
  • Executável exige UAC: inicie via atalho/launcher sem elevação.

Soluções alternativas (quando a GPO não é opção)

Script de logon (User Configuration → Windows Settings → Scripts)

Batch (somente em sessões RDP):

@echo off
REM Só continua se a sessão for RDP (ex.: RDP-Tcp#1)
if /I not "%SESSIONNAME:~0,3%"=="RDP" exit /b
start "" "%SystemRoot%\System32\calc.exe"

PowerShell (somente em sessões RDP):

if ($env:SESSIONNAME -like 'RDP*') {
  Start-Process "$env:SystemRoot\System32\calc.exe" -WorkingDirectory "$env:SystemRoot\System32"
}

Tarefa agendada no logon do usuário

Crie uma tarefa com gatilho “At log on” e ação para iniciar o executável/atalho. Se precisar limitar a sessões remotas, chame um script curto com a checagem de $env:SESSIONNAME conforme acima.

Checklist de diagnóstico rápido

  • RDSH instalado (se for host de sessões)?
  • GPO definida apenas em Computer ou em User (nunca nos dois)?
  • “Always show desktop on connection” está Disabled ou Not Configured?
  • “Program path” e “Working directory” corretos e com variáveis de ambiente?
  • gpupdate /force executado e logoff/logon realizados?
  • Cliente RDP sem “Start program” habilitado?
  • Aplicativo não requer elevação/UAC no primeiro lançamento?

Perguntas frequentes

Funciona sem RDSH? Pode funcionar, mas é menos previsível, sobretudo com contas locais. Em hosts de sessão (RDSH), o comportamento segue o design da política.

Posso usar apenas User Configuration? Sim, desde que você não tenha a mesma configuração em Computer Configuration. Se houver, a de Computer prevalece.

Preciso preencher o “Working directory”? Para executáveis simples (como calc.exe), não é obrigatório; para muitos apps de terceiros, é essencial.

O cliente RDP do usuário pode interferir? Sim. Se o cliente estiver configurado para iniciar outro programa, pode haver conflito. Teste com um perfil de conexão neutro.

Como audito a aplicação? Use gpresult, RSOP e os logs de Terminal Services no Event Viewer.

Conclusão

Para que a GPO Start a program on connection funcione de maneira consistente no Windows Server 2022, elimine conflitos (especialmente com Always show desktop on connection), padronize o escopo (Computer ou User), preencha corretamente o diretório de trabalho e valide as GPOs aplicadas. Em ambientes RDS com o papel RDSH, o comportamento é mais previsível; em servidores sem esse papel, os ajustes acima costumam ser suficientes para garantir que o aplicativo desejado — como a Calculadora — inicie imediatamente após a conexão RDP, tanto para usuários locais quanto de domínio.

Índice