[Win] Recensement des techniques d'exécution de code en mode admin.

Recensement des techniques d'exécution de code en mode admin. [Win] - Divers - Programmation

Marsh Posté le 16-11-2004 à 17:28:51    

Salut à tous,
 
Sur un poste sous Windows, pour exécuter du code en mode administrateur sur un compte dont les droits sont limités (ex: l'utilisateur ne peut écrire dans certains dossiers), j'ai recensé à ce jour 2 techniques :
 
1/ Créer un service Windows qui pourra exécuter ce code avant l'ouverture de session ou n'importe quand après.
 
2/ Technique de "l'impersonation" permettant d'exécuter du code dans le cadre d'un thread "impersonnel" i.e ayant tous les droits sur la machine. (fct CreateProcessWithLogonW  de l'api Advapi32)
 
Je souhaite utiliser ce genre de technique dans le cadre d'un système de mise à jour automatique d'une application (sous win 2000/XP). Cette application doit avoir les droits de l'administrateur de la machine pour pouvoir écrire sur le disque dans les dossiers concernés, et dans la base de registre (HKLM).
 
Connaissez vous d'autres techniques?  
Comment exécuter du code avant l'ouverture de session sans passer par un service (scripts? ...)?
 
 :jap:

Reply

Marsh Posté le 16-11-2004 à 17:28:51   

Reply

Marsh Posté le 16-11-2004 à 18:08:01    

En .Net y'a System.Security.Principal.WindowsImpersonationContext et y'aurait WMI aussi. Apparement vaudrait mieux utiliser LogonUser & CreateProcessAsUser que CreateProcessWithLogonW qui échouerait sous 2003/SP2.

Citation :

Windows XP SP2 and Windows Server 2003:  You cannot call CreateProcessWithLogonW from a process running under the LocalSystem account. This is because the function uses the logon SID in the caller token and the token for the LocalSystem account does not contain this SID. As an alternative, use the CreateProcessAsUser and LogonUser functions



---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 16-11-2004 à 19:36:54    

Ouai g remarqué :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed