Hay veces en las que es necesario tener acceso al mismo entorno en el que se ejecuta la cuenta SYSTEM (por ejemplo para comprobar que un script que va a ser programado bajo este usuario funciona correctamente).
En Windows 2000, 2003 y XP se podía usar el comando AT para obtener una línea de comandos en esta cuenta ejecutando AT hh:mm /interactive cmd.exe
. ¿Por qué funcionaba así? Por una razón muy sencilla. El comando anterior lo único que ha hecho es programar la ejecución de una línea de comandos a una hora concreta. Como el servicio Windows que se encarga de la programación de tareas se ejecuta bajo SYSTEM esta tarea también lo hará. Al añadir el parámetro /interactive
conseguimos ver el resultado por pantalla y tener acceso a la línea de comandos.
En Windows 2008, Vista y Windows 7, debido a la seguridad UAC y al hecho de tener la sesión de usuario y la de servicios en sesiones diferentes, este truco no funciona y hay que buscar alternativas. La más sencilla es usar la utilidad PsExec de SysInternals (Microsoft) y ejecutar el siguiente comando:
C:TEMP>psexec -i -d -s cmd.exe
PsExec v1.98 - Execute processes remotely
Copyright (C) 2001-2010 Mark Russinovich
Sysinternals - www.sysinternals.com
cmd.exe started on MACHINE with process ID 5428.
Se abrirá una nueva ventana con la línea de comandos ejecutándose desde la cuenta SYSTEM (se puede comprobar ejecutando el comando whoami.exe
) desde la que podremos comprobar sin problemas los scripts ;-)