Cómo iniciar automáticamente un programa al conectarse por RDP en Windows Server 2022

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.

Índice

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:

EscenarioComputer ConfigurationUser ConfigurationResultado
ADefinidaNo definidaSe aplica la de equipo
BNo definidaDefinidaSe aplica la de usuario
CDefinidaDefinidaSe aplica la de equipo
DNo definidaNo definidaNo 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

  1. Deshabilita Always show desktop on connection en la rama de equipo.
  2. Vuelve a forzar la aplicación de directivas: gpupdate /force.
  3. 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

  1. Verifica el rol RDSH con Get-WindowsFeature.
  2. Deshabilita Always show desktop on connection en Computer Configuration.
  3. ConfiguraStart a program on connection en la rama que necesites:
    • Program path: C:\Windows\System32\calc.exe
    • Start in: %SystemRoot%\System32
  4. Ejecuta gpupdate /force y revisa gpresult /h para el usuario afectado.
  5. Reinicia el servicio de Escritorio remoto o el servidor completo.
  6. 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 LogsMicrosoft → 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.

Índice