Bonjour,
Oui, le sujet ne semble pas intéresser beaucoup de monde, ou bien il est trop compliqué que personne ne s'y intéresse... mais disons que c'est pratique en entreprise de pouvoir faire exécuter à des users, des choses auxquels ils n'ont pas droit, alors je me suis penché sur le sujet sérieusement il y a un petit moment déjà).
En fait, dans l'administration des comptes NT/XP/AD, tu as des notions de droits utilisateurs et aussi des notions de privilèges (exemple de privilège: pouvoir éteindre ou non une machine, se connecter depuis le réseau etc etc ...). Dans ton cas, tu utilises la fonction suivante: "logonuser", qui sera exécutée avec ton compte utilisateur lambda (pour justement se loguer en tant qu'admin).
Si tu vas voir:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthn/security/logonuser.asp
Tu verras que la personne qui va lancer un process qui s'appuie sur logonuser doit avoir la plupart du temps les privilèges suivants:
SE_TCB_NAME = "Act as part of the Operating System"
SE_CHANGE_NOTIFY_NAME = "Bypass traverse checking"
Il faut donc que dans l'administration de ta machine:
- dans NT on accède aux privilèges par:
* programmes/outils d'administration/gestionnaire des utilisateurs
* stratégie/droits des utilisateurs (cocher "afficher les droits avancés des
utilisateurs" pour les avoir tous)
- dans 2000/XP on y accède par:
* panneau de config/outil d'admin/stratégie de sécurité locale/
* stratégies locales/attribution des droits utilisateur
il faut que le compte lambda qui va faire le logonuser dispose des privilèges ci dessus ( je pense que pour toi c'est le premier qui manque pour le compte lambda).
Ceci dit, si la population de machines sur laquelle tu dois mettre en place ta solution, est une population de machines XP, moi je te conseille d'utiliser à ce moment là la fonction "CreateProcessWithLogonW" (ne fonctionne pas sur NT ). Là, tu n'as aucun logon user à faire, il suffit d'appeler la fonction et tout se fait naturellement et simplement et avec les privilèges de base des utilisateurs en plus !!!!
Voilà, j'espère que c'est plus clair pour toi (parce que j'ai pas dû pas du être trop clair dnas la façon de m'exprimer ). Donc il faut juste pour que ton code s'exécute, que tu ajoutes - pour le compte qui va exécuter ce code - le premier privilège et peut être le deuxième. Je sais que moi j'ai assez longtemps galéré avant de trouver ça. (un conseil, révise la partie administration NT/XP et ça devrait bien se passer).
Meilleures salutations et bon courage à toi.
hendrix