Ou comment lancer Windows Explorer en tant qu'administrateurCe cas de figure peut se présenter quand un administrateur se connecte sur un serveur où l'UAC est actif et souhaite, pour créer des fichiers dans les dossiers protégés de Windows par exemple, exécuter une instance de l'explorateur avec un contexte administrateur.
Sans la case "launch folder windows in a separate process" cochée dans les propriétés des dossiers
Sans fenêtre d'explorateur ouverte, on trouve un processus explorer.exe (PID 1656) qui tourne sans privilège, c'est le shell de l'utilisateur, son bureau.
On lance un explorateur, sans demander l'élévation de privilège, aucun nouveau processus n'est créé et, logiquement, les actions d'administration ne sont pas possibles.
On lance un explorateur, en demandant l'élévation de privilège, aucun nouveau processus n'est créé non plus et, logiquement, les actions d'administration ne sont pas possibles.
Avec la case "launch folder windows in a separate process" cochée
Sans fenêtre d'explorateur ouverte, on trouve un processus explorer (PID 216) qui tourne sans privilège, c'est le shell de l'utilisateur, son bureau.
On lance un explorateur, sans demander l'élévation de privilège, un nouveau processus est créé (PID 2432, fils de 216) et, logiquement, les actions d'administration ne sont pas possibles
On le ferme et lance un explorateur, en demandant l'élévation de privilège, un nouveau processus est créé (PID 2804, pas de processus père) et, logiquement, les actions d'administration sont possibles
On le ferme
On lance un explorateur, sans demander l'élévation de privilège (PID 3004, fils de 216, pas d'action d'administration possible) puis on lance un second explorateur, en demandant l'élévation de privilège. Aucun processus n'est créé pour ce deuxième explorateur et aucune action d'administration n'est possible.
On ferme des ceux explorateurs et effectue l'opération inverse :
On lance un premier explorateur avec élévation de privilège (PID 1100, pas de parent, actions d'administrations possibles) puis un second explorateur sans demander l'élévation de privilège. Aucun nouveau processus n'est créé pour ce deuxième explorateur et les deux permettent de réaliser des actions d'administration.
Plusieurs solutions de contournement existent
Tout est très bien documenté dans le blog de Aaron Margosis (très bonne source d'information sur sur UAC) :
Aaron Margosis' "Non-Admin" WebLog - RunAs with Explorerhttp://blogs.msdn.com/aaron_margosis/archive/2004/07/07/175488.aspx
Cyrille de Pardieu
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
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
Remote.exe
Remote.exe fait parti des Debugging Tools disponibles sur le site web Microsoft à l'adresse http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx
La commande cmd.exe affichera alors
*************************************************** REMOTE ************************ CLIENT *****************************************************Connected...c:\windows\system32** Remote: Connected to %computername%