cs_Rankin
Messages postés52Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention27 avril 2010
-
13 août 2009 à 12:10
cs_Rankin
Messages postés52Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention27 avril 2010
-
13 août 2009 à 14:32
Salut à tous,
J'ai créé un programme qui doit exécuter des commandes sous un compte admin. J'ai prévu le cas où un utilisateur simple exécute mon application : dans ce cas la commande sera exécutée avec d'autres privilèges.
J'utilise actuellement un appel au programme externe CPAU.exe, mais je n'en suis pas satisfait : ce n'est pas propre et j'ai un cas où la commande ne peu s'exécuter (appel à une fonction système dont les arguments comprennent des espaces).
Étant donné que CPAU.exe est fait en C++ et qu'il fait ce que je veux faire, il paraît logique que mon programme effectue lui-même la création de processus par un autre utilisateur.
Après recherche, j'ai constaté qu'il y avait plusieurs façons de faire : un LogonUser suivi de CreateProcessWithToken ou CreateProcessAsUser.
Comme apparemment de nombreuses personnes, j'ai rencontré l'erreur 1314, droits insuffisants.
Je me suis donc rabattu vers la fonction "CreateProcessWithLogonW" qui, semble-t-il, a été la solution miracle pour de nombreux programmeurs. Le problème, c'est qu'à la compilation, j'ai l'erreur suivante :
"`CreateProcessWithLogonW' undeclared (first use this function) "
Or, cette fonction est bien définie dans le header winbase.h que j'inclus dans mon programme, et Wxdev-c++ 6.10.2 que j'utilise me propose le choix de cette fonction en auto-complétion.
Dois-je ajouter un lien à la compilation, mon fichier winbase n'est-il pas correct, ... ?
J'avoue ne plus trop savoir quoi faire pour me dépêtrer de cette situation !
Merci pour vos conseils / aide / encouragements ;)
cs_Rankin
Messages postés52Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention27 avril 2010 13 août 2009 à 13:44
Well, I tried to comment the "#if (_WIN32_WINNT >= 0x0500)" in Winbase.h.
I encountered several other problems after, like invalid handles, but I finally managed to run my application.
How can I redefine the value of _WIN32_WINNT if it's already done with a value lower than 0x0500 ?
Vous n’avez pas trouvé la réponse que vous recherchez ?