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.

clip_image001

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.

clip_image003

Pour obtenir un command prompt dans le contexte système sur ces plateformes, plusieurs autres solutions existent.

 

PsExec

clip_image005

 

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%

clip_image007

 

Mots clés Technorati : contexte système,vista

Cyrille de Pardieu