Salut tt le monde,
JE veux savoir, est-ce-qu'il y a une possibilité de détecter le type de session (administrateur ou utilisateur) ou j'execute mon programme.
merci a l'avance?
Version imprimable
Salut tt le monde,
JE veux savoir, est-ce-qu'il y a une possibilité de détecter le type de session (administrateur ou utilisateur) ou j'execute mon programme.
merci a l'avance?
Salut,
regarde du côté de "LogonUser".
merci pour ta reponse,Citation:
Envoyé par zemeilleurofgreg
j'avais essayé cette fonction, et voilà mon premier code
lors de l'execution de cette derniere, j'ai un code d'erreur 1327 alors que je suis en mode administrateur.Code:
1
2
3
4
5
6
7
8 var Token : THandle; begin if LogonUser('aze', 'CD', nil, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_WINNT50, Token) then showmessage('Authentification réussie') else showmessage('Authentification échouée' + #13 + 'Code d''erreur: ' +IntToStr(GetLastError)); end;
il y'a une explication à ça.
Bonjour, tu peux utiliser la fonction suivante :
Je l'utilise souvent et cela fonctionne très bien.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 function CurrentUserIsAdmin:boolean; var hAccessToken : tHandle; ptgGroups : Ptokengroups; dwInfoBufferSize : dWord; psIdAdministrators : PSid; x : integer; bSuccess : BOOL; begin Result := false; bSuccess := OpenThreadToken(GetCurrentThread,TOKEN_QUERY,true,hAccessToken ); if not bSuccess then begin if GetLastError = ERROR_NO_TOKEN then bSuccess := OpenProcessToken(GetCurrentProcess,TOKEN_QUERY,hAccessToken ); end; if bSuccess then begin GetMem(ptgGroups,1024); bSuccess := GetTokenInformation(hAccessToken,TokenGroups,ptgGroups,1024,dwInfoBufferSize ); closehandle(hAccessToken); if bSuccess then begin AllocateAndInitializeSid(SECURITY_NT_AUTHORITY,2,SECURITY_BUILTIN_DOMAIN_RID,DOMAIN_ALIAS_RID_ADMINS,0,0,0,0,0,0,psIdAdministrators ); {$R-} for x :=0 to ptgGroups.GroupCount -1 do if EqualSid(psIdAdministrators,ptgGroups.groups[x].Sid ) then begin Result := true; Break; end; {$R+} FreeSid(psIdAdministrators ); end; FreeMem(ptgGroups); end; end;
Pour que cela fonctionne il faut que tu ajoutes windows dans les uses..
Quand je compile, la constante SECURITY_NT_AUTHORITY n'est pas définie. Faut ajouter quelle bibliothèque (autre que windows) ?Citation:
Envoyé par MedGIR
Excuse-moi, j'ai oublié de te dire qu'il faut créer une constante au niveau de l'interface du code comme ceci:
Code:const SECURITY_NT_AUTHORITY : TSIDIdentifierAuthority = (Value:(0,0,0,0,0,5));