Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1535 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  donner un privilège a mon application

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

donner un privilège a mon application

n°1430484
xphanoo
Posté le 24-08-2006 à 11:22:20  profilanswer
 

bonjour
 
j'aurais voulu utiliser les fonctions pour éteindre/redémarrer le pc automatiquement  
 
 
mais elles ne fonctionnent que si mon programme a les privilèges windows, et pour ça il faut mettre ce bout de code (j'ai trouvé le meme sur plusieurs sites):
 

Code :
  1. HANDLE hToken;
  2. TOKEN_PRIVILEGES tkp;
  3. AnsiString error;
  4. // Get a token for this process.
  5. if (!OpenProcessToken(GetCurrentProcess(),
  6. TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
  7. error = "OpenProcessToken";
  8. // Get the LUID for the shutdown privilege.
  9. LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
  10. &tkp.Privileges[0].Luid);
  11. tkp.PrivilegeCount = 1; // one privilege to set
  12. tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
  13. // Get the shutdown privilege for this process.
  14. AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
  15. (PTOKEN_PRIVILEGES)NULL, 0);
  16. // Cannot test the return value of AdjustTokenPrivileges.
  17. if (GetLastError() != ERROR_SUCCESS)
  18. error = "AdjustTokenPrivileges";


 
mais quand je l'utilise j'ai une montagne d'erreurs ! (erreurs de syntaxes, variables non définies, erreurs de liens... la totale quoi)
pourtant sur tous les sites qui proposaient ce code AUCUN n'a spécifié qu'il fallait inclure un header ou un .lib particulier... help !

mood
Publicité
Posté le 24-08-2006 à 11:22:20  profilanswer
 

n°1430523
_darkalt3_
Proctopathe
Posté le 24-08-2006 à 11:45:14  profilanswer
 

Quelle est la question ?


Message édité par _darkalt3_ le 24-08-2006 à 11:45:38

---------------
Töp of the plöp
n°1430534
xphanoo
Posté le 24-08-2006 à 11:55:53  profilanswer
 

:D  
ben, comment faire pour que ce code fonctionne ?
 
j'en ai trouvé un autre, qui me donne qu'une seule erreur lors de la compilation:

Code :
  1. bool __fastcall SetPrivilege(SE_SHUTDOWN_NAME, TRUE)
  2. {
  3.    TOKEN_PRIVILEGES wTokenIn, wTokenOut;
  4.    DWORD wLength;
  5.    HANDLE wCurrentProcess, wToken;
  6.    _LUID wLuid;
  7.    bool ret;
  8.    wCurrentProcess = GetCurrentProcess();
  9.    OpenProcessToken(wCurrentProcess, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &wToken);
  10.    LookupPrivilegeValue(NULL, name.c_str(), &wLuid);
  11.    wTokenIn.PrivilegeCount = 1;
  12.    wTokenIn.Privileges[0].Luid = wLuid;
  13.    wTokenIn.Privileges[0].Attributes = (grant?SE_PRIVILEGE_ENABLED:0);
  14.    ret = AdjustTokenPrivileges(wToken, FALSE, &wTokenIn, sizeof(TOKEN_PRIVILEGES), &wTokenOut,&wLength))
  15.    CloseHandle(wToken);
  16.    return ret;
  17. }


 
error C2448: 'SetPrivilege' : l'initialiseur de style fonction semble être une définition de fonction

n°1430536
_darkalt3_
Proctopathe
Posté le 24-08-2006 à 11:58:39  profilanswer
 

T'as vérifié fonction utilisée par fonction utilisée dans quelle(s) bibliothèque(s) tu pouvais les trouver ?


Message édité par _darkalt3_ le 24-08-2006 à 11:59:01

---------------
Töp of the plöp
n°1430563
xphanoo
Posté le 24-08-2006 à 12:18:59  profilanswer
 

comment le vérifier ?
d'après ce que j'ai lu ça fait partie de l'api windows, il faut inclure windows.h mais ensuite ils ne parlent pas de .lib a ajouter dans l'éditeur de liens :/

n°1430639
straffo
Posté le 24-08-2006 à 13:45:01  profilanswer
 

Citation :

Library  
 
Use Advapi32.lib.


 
Vu dans http://msdn.microsoft.com/library/ [...] ileges.asp

n°1430674
xphanoo
Posté le 24-08-2006 à 14:36:19  profilanswer
 

je l'ai inclu mais ça me fait toujours la meme erreur :/
pour advapi32.dll je pense que le .lib le charge de lui-meme non ?
là ché plus quoi faire  :pt1cable:


Message édité par xphanoo le 24-08-2006 à 14:41:56
n°1430742
karlkox
Posté le 24-08-2006 à 15:49:15  profilanswer
 

SetPrivilege() <-- enleve les params

n°1430897
xphanoo
Posté le 24-08-2006 à 17:57:11  profilanswer
 

j'ai trouvé un autre bout de code et celui-ci marche sans problème, va savoir pourquoi...
 

Code :
  1. HANDLE token;
  2.    TOKEN_PRIVILEGES privileges;
  3.    // Get the current process token handle...
  4.    OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &token );
  5.    // Get the LUID for shutdown privilege...
  6.    LookupPrivilegeValue( NULL, SE_SHUTDOWN_NAME, &privileges.Privileges[ 0 ].Luid );
  7.    // Set parameters for AdjustTokenPrivileges...
  8.    privileges.PrivilegeCount = 1;
  9.    privileges.Privileges[ 0 ].Attributes = SE_PRIVILEGE_ENABLED;
  10.    // Enable shutdown privilege...
  11.    AdjustTokenPrivileges( token, FALSE, &privileges, 0, (PTOKEN_PRIVILEGES)NULL, 0 );

n°1431369
karlkox
Posté le 25-08-2006 à 13:38:07  profilanswer
 

LookupPrivilegeValue( NULL, SE_SHUTDOWN_NAME, &privileges.Privileges[ 0 ].Luid ) != LookupPrivilegeValue(NULL, name.c_str(), &wLuid); car name.c_str() n'apparait nul par dans ton code, ça doit surement être le param non typé du param SE_SHUTDOWN_NAME dans SetPrivilege(SE_SHUTDOWN_NAME, TRUE) donc ça me parait logique.

mood
Publicité
Posté le 25-08-2006 à 13:38:07  profilanswer
 

n°1431389
supalou
Posté le 25-08-2006 à 14:04:18  profilanswer
 

Salut tout le monde
 
Je cherche depuis un petit moment a faire exactement la même chose que xphanoo mais en asp.
J'ai donc pris le bout de code que tu as donné qui apparement marche chez toi mais pas chez moi :-(
 
"Une directive using ou une référence d'assembly est introuvable"
 
Quand j'essaye d'ajouter la référence "Advapi32.dll" il me dit que "[...] ce n'est pas une assembly valide ou un composant com [...]"
 
Est ce que quelqu'un pourrait m'expliquer comment donner les privilèges à mon application asp afin de pouvoir utiliser les fonctions pour redemarrer un pc???
 
En vous remerciant

n°1431511
straffo
Posté le 25-08-2006 à 16:07:44  profilanswer
 

xphanoo a écrit :

:D  
ben, comment faire pour que ce code fonctionne ?
 
j'en ai trouvé un autre, qui me donne qu'une seule erreur lors de la compilation:

Code :
  1. bool __fastcall SetPrivilege(SE_SHUTDOWN_NAME, TRUE)
  2. {
  3. <snip>
  4. }


 
error C2448: 'SetPrivilege' : l'initialiseur de style fonction semble être une définition de fonction


 
hahem ... tu n'aurais pas oublié le type dans la déclaration de ta fonction ?
bool __fastcall SetPrivilege(SE_SHUTDOWN_NAME typeX, TRUE type2)
 
Ca aurais une meilleur gueulle !

n°1432162
marctes
Posté le 27-08-2006 à 18:23:14  profilanswer
 

xphanoo a écrit :

j'ai trouvé un autre bout de code et celui-ci marche sans problème, va savoir pourquoi...


 
Commence par apprendre à programmer avec un bouquin au lieu de copier n'importe quoi sur le net sans rien comprendre.
90% des codes des forums (genre developpez (le pire)) sont écrits par des incapables ou des gamins.
Les seuls codes valables sont ceux de msdn (source des 10% restants évidemment...)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  donner un privilège a mon application

 

Sujets relatifs
{resolu}[vba-access] problème avec "word.application"Quelle solution de stockage de données pour application locale?
[WEB SERVICES][AXIS] comment forcer le paramètre scope "application"?Hyperlien qui ouvre une application
[résolu]Ouvrir un site web depuis une application en C[OpenGL] Filmer une application opengl
erreur définie par l'application ou par l'objet résoluPop up sur lancement d'application
donner un numero de version automatique au programmeProblème avec une petite application RMI en java
Plus de sujets relatifs à : donner un privilège a mon application


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR