Comment faire tourner un cmd dans le contexte système
Jusqu'à Windows Server 2003 R2, il était possible d'avoir un cmd s'exécutant dans le contexte système. Cela permettait, entre autre, de tester le contexte système (pour des accès à des partages par exemple) et d'afficher les tickets Kerberos attribué à la machine.
Pour cela, il fallait
- Ouvrir une session localement sur le serveur ou se connecter à la session console en bureau à distance (mstsc /console)
- Planifier une tâche interactive démarrant cmd.exe
at HH:MM /interactive cmd.exe
A l'heure indiquée un nouveau command prompt apparait, il s'exécute dans le contexte système.
Depuis Windows Vista et Windows Serveur 2008, ce mécanisme ne fonctionne plus. Les tâches planifiées via AT ne peuvent plus être interactives.
Pour obtenir un command prompt dans le contexte système sur ces plateformes, plusieurs autres solutions existent.
PsExec
- Télécharger l'outil PsExec sur le site Microsoft (https://www.microsoft.com/technet/sysinternals/utilities/psexec.mspx) et installez-le
- Démarrez un command prompt avec tous les privilèges (Exécuter en tant qu'administrateur)
- Exécuter la commande
PSEXEC -i -s –d cmd.exe
Remote.exe
Remote.exe fait parti des Debugging Tools disponibles sur le site web Microsoft à l'adresse
https://www.microsoft.com/whdc/DevTools/Debugging/default.mspx
- Copier remote.exe sur la machine dans le dossier c:\Debuggers (par exemple)
- Démarrez un command prompt avec tous les privilèges (Exécuter en tant qu'administrateur)
- Exécutez la commande
AT HH:MM c:\Debuggers\remote.exe /s c:\windows\system32\cmd.exe SYSCMD - Une fois l'heure spécifiée passée, exécutez la commande
c:\debuggers\remote.exe /c <ComputerName> SYSCMD
La commande cmd.exe affichera alors
****************************************
*********** REMOTE *************
*********** CLIENT *************
****************************************
Connected...
c:\windows\system32
** Remote: Connected to %computername%
Mots clés Technorati : contexte système,vista
Cyrille de Pardieu