Configurar que una aplicación se abra sola al conectarse por RDP en Windows Server 2022 puede ahorrar muchos clics y evitar errores humanos, pero no siempre funciona a la primera. En esta guía aprenderás a diagnosticar y solucionar los problemas más frecuentes cuando la directiva Start a program on connection parece aplicada pero la aplicación (por ejemplo calc.exe
) no se inicia.
Por qué la directiva puede fallar en Windows Server 2022
En versiones anteriores de Windows Server bastaba con definir la directiva en Gpedit o en una GPO de dominio; sin embargo, Windows Server 2022 introduce cambios en los servicios de Escritorio remoto y en la jerarquía de directivas que hacen que una configuración aparentemente idéntica no surta efecto. Los factores críticos suelen ser:
- El servidor no actúa como Remote Desktop Session Host (RDSH).
- Hay directivas de mayor prioridad que anulan el comportamiento.
- Falta la ruta completa o un directorio de trabajo válido.
- La sesión RDP es de administración y no de host de sesión.
Convertir el servidor en Host de Sesión de Escritorio Remoto
La directiva solo se aplica a máquinas con el rol RDSH. Instala los componentes mínimos:
Server Manager → Add roles and features
✔ Remote Desktop Services
✔ Remote Desktop Session Host
(opcional) Remote Desktop Licensing
Reiniciar el servidor cuando se solicite.
Una vez reiniciado, verifica en Get-WindowsFeature
que RDS-RD-Server
esté en estado Installed.
¿Por qué importa?
Al conectarte por RDP a un servidor sin el rol RDSH sólo obtienes una “sesión de administración remota”. Este modo ignora la mayoría de las directivas de la rama Remote Desktop Session Host, incluidas las de inicio de programas.
Precedencia entre Equipo y Usuario
La directiva Start a program on connection existe en dos rutas:
- Computer Configuration → Administrative Templates → System → Remote Desktop Services → Remote Desktop Session Host → Remote Session Environment
- User Configuration → Administrative Templates → System → Remote Desktop Services → Remote Desktop Session Host → Remote Session Environment
Si ambas se definen, la de Computer Configuration prevalece. Esto significa que:
Escenario | Computer Configuration | User Configuration | Resultado |
---|---|---|---|
A | Definida | No definida | Se aplica la de equipo |
B | No definida | Definida | Se aplica la de usuario |
C | Definida | Definida | Se aplica la de equipo |
D | No definida | No definida | No se aplica ninguna |
Para evitar confusión, define la directiva solo donde la necesites y deja Not Configured en la rama que no usarás.
Directiva conflictiva: “Always show desktop on connection”
Cuando la directiva Always show desktop on connection está habilitada en Computer Configuration, el sistema ignora la orden de lanzar un programa específico y muestra el escritorio vacío. Comprueba su estado:
gpresult /h %TEMP%\gp.html & start %TEMP%\gp.html
O bien con RSOP.msc.
Solución
- Deshabilita Always show desktop on connection en la rama de equipo.
- Vuelve a forzar la aplicación de directivas:
gpupdate /force
. - Reinicia el servicio
TermService
o reinicia el servidor.
Configurar ruta y directorio de trabajo
La directiva requiere:
- Program path: ruta completa del ejecutable, p. ej.
C:\Windows\System32\calc.exe
. - Start in: carpeta existente (p. ej.
%SystemRoot%\System32
). Si queda vacío, se usa la del ejecutable.
Si cualquiera de las dos rutas es incorrecta, la conexión RDP puede fallar con “Desconectado inesperadamente”. Observa el Visor de eventos (\ Applications and Services Logs → Microsoft → Windows → TerminalServices-RemoteConnectionManager) para mensajes de error como 0xC0000135
.
Pasos detallados para la solución completa
- Verifica el rol RDSH con
Get-WindowsFeature
. - Deshabilita Always show desktop on connection en Computer Configuration.
- ConfiguraStart a program on connection en la rama que necesites:
- Program path:
C:\Windows\System32\calc.exe
- Start in:
%SystemRoot%\System32
- Program path:
- Ejecuta
gpupdate /force
y revisagpresult /h
para el usuario afectado. - Reinicia el servicio de Escritorio remoto o el servidor completo.
- Conéctate por RDP con una cuenta local para confirmar que se abre Calculator.
Pruebas adicionales y buenas prácticas
Usar otro ejecutable de prueba
Si calc.exe
no se inicia, prueba con notepad.exe
para descartar problemas de UAC o restricciones de AppLocker/Defender. Configura temporalmente:
Program path: C:\Windows\System32\notepad.exe
Start in: %SystemRoot%\System32
Revisar AppLocker y Windows Defender
Un conjunto estricto de reglas de Applocker o políticas de reducción de superficie de ataque (ASR) puede impedir la ejecución al inicio de sesión. Comprueba:
- Event Viewer → Applications and Services Logs → Microsoft → Windows → AppLocker *.
- Event Viewer → Windows Defender → Operational.
Si detectas bloqueos, ajusta las reglas o crea exclusiones para la aplicación.
Evitar sesiones administrativas
Las conexiones RDP establecidas con la opción /admin omiten muchas directivas de usuario. Asegúrate de que los técnicos se conecten de forma estándar cuando prueben la GPO.
Habilitar el registro de depuración del servicio de sesión
Para diagnósticos avanzados, activa el canal analítico:
wevtutil sl Microsoft-Windows-TerminalServices-SessionBroker-Client/Operational /e:true
Tras reproducir el problema, exporta los eventos y revisa los códigos de error.
Mantenimiento y verificación periódica
Las actualizaciones de sistema o revisiones de seguridad pueden restablecer o eliminar componentes RDS. Cada vez que se apliquen parches acumulativos:
- Ejecuta
Get-WindowsFeature RDS-RD-Server
para confirmar que sigue instalado. - Usa
gpresult
para comprobar que la directiva permanece en estado Enabled. - Comprueba que el servicio
TermService
esté iniciado y con tipo de inicio Manual.
Preguntas frecuentes
¿Funciona esto con usuarios de dominio?
Sí. De hecho, suele funcionar primero con cuentas de dominio porque la GPO se distribuye correctamente a través de Active Directory. El problema comentado ocurre sobre todo con cuentas locales, donde a menudo se confía en Local Group Policy y se olvida la directiva de “Mostrar siempre el escritorio”.
¿Puedo usar variables de entorno en la ruta?
Sí. Variables como %SystemRoot%
o %ProgramFiles%
se expanden correctamente. Evita rutas de red (UNC) porque se resuelven después de iniciar la sesión y podrían provocar errores.
¿Es posible abrir varios programas?
La directiva admite una sola ruta. Para lanzar varios procesos, apunta a un script por lotes o un archivo .ps1
firmado con un certificado de confianza. Ejemplo:
@echo off
start "" "%SystemRoot%\System32\calc.exe"
start "" "%SystemRoot%\System32\notepad.exe"
Resumen de la solución aplicada en el caso real
El administrador:
- Instaló el rol RDSH en Windows Server 2022.
- Deshabilitó la directiva Always show desktop on connection en Computer Configuration.
- Configuró correctamente Start a program on connection con la ruta completa de
calc.exe
y un directorio de trabajo válido. - Ejecutó
gpupdate
, revisóRSOP.msc
y verificó que la directiva se aplicaba al usuario local. - Comprobó que, al conectarse por RDP, Calculator se abría automáticamente antes que el escritorio.
Con estos pasos, se restableció la funcionalidad que existía en Windows Server 2012, ahora adaptada a la jerarquía de políticas y requisitos de Windows Server 2022.
Conclusión
Si tu aplicación no se inicia al conectarte por RDP en Windows Server 2022, no asumas que la directiva no funciona: comprueba los requisitos de rol RDSH, la precedencia de directivas y los posibles conflictos con políticas como Always show desktop on connection. Con una verificación sistemática de roles, rutas y jerarquías, la puesta en marcha automática de programas vuelve a ser tan fiable como en versiones anteriores del servidor.