AccueilCodes sourcesFreewaresArticlesRéponsesRechercheVotre avisNewsMon blogLiensContact
Dimanche 02 Novembre 2025

Valid HTML 4.01 Transitional

126 codes sources48 articles77 news24 Liens15 avis9 réponses.
Comment savoir si une session Windows a été ouverte avec des droits administrateur ?
FONCTION EstAdministrateur ()


HEAP_ZERO_MEMORY est un entier= 0x00000008
ghProcessHeap est un entier système = AppelDLL32 ( "kernel32" , "GetProcessHeap" )
gsMessageErreur est une chaîne = ""

b Admin est un booléen = Faux

// Message d'erreur éventuel
gsMessageErreur = ""

SI PAS ( SysVersionWindows ( sysVersionPlateForme )= "NT" ) ALORS
gsMessageErreur = "Le système n'est pas Windows..."
RENVOYER b Admin
FIN

// Ouverture du process
PROCESS_QUERY_INFORMATION est un entier = 0x400
dwProcessId est un entier système = AppelDLL32 ( "kernel32" , "GetCurrentProcessId" )
hProcess est un entier système = AppelDLL32 ( "kernel32" , "OpenProcess" , PROCESS_QUERY_INFORMATION , 0 , dwProcessId )

// Ouverture du token du process
HToken est un entier système
TOKEN_QUERY est un entier système = 0x0008
b Res est un booléen = AppelDLL32 ( "advapi32" , "OpenProcessToken" , hProcess , TOKEN_QUERY ,& HToken )

// Demande de la taille des infos de groupe
DwTailleGroups est un entier système = 0
AppelDLL32 ( "advapi32" , "GetTokenInformation" , HToken , 2 ,Null, 0 ,& DwTailleGroups )

// Allocation de la structure
pBuffer est un entier système = AppelDLL32 ( "kernel32" , "HeapAlloc" , ghProcessHeap , HEAP_ZERO_MEMORY , DwTailleGroups + 16 )

// Récup de la liste des groupes
AppelDLL32 ( "advapi32" , "GetTokenInformation" , HToken , 2 , pBuffer , DwTailleGroups , DwTailleGroups )

// Conversion du buffer "raw" en une structure
n NbGroupes est un entier système
Transfert (& n NbGroupes , pBuffer , 4 )

SID_AND_ATTRIBUTES est une structure
pSID est un entier système
dwAttribut est un entier système
FIN

n TailleAlloc est un entier = n NbGroupes + 1
tabInfoGroupe est un tableau dynamique = allouer un tableau de n TailleAlloc SID_AND_ATTRIBUTES

Transfert (& tabInfoGroupe , pBuffer + 4 , n NbGroupes * 8 )

//On récupère le SID administrateur
SIDAdmin est composée de
byRev est un entier sur 1 octet
bySubCount est un entier sur 1 octet
byAuth1 est un entier sur 1 octet
byAuth2 est un entier sur 1 octet
byAuth3 est un entier sur 1 octet
byAuth4 est un entier sur 1 octet
byAuth5 est un entier sur 1 octet
byAuth6 est un entier sur 1 octet
dwFirstSubAuth est un entier sur 4 octets
dwSecondSubAuth est un entier sur 4 octets

FIN

SIDAdmin . byRev = 1
SIDAdmin . bySubCount = 2
SIDAdmin . byAuth1 = 0
SIDAdmin . byAuth2 = 0
SIDAdmin . byAuth3 = 0
SIDAdmin . byAuth4 = 0
SIDAdmin . byAuth5 = 0
SIDAdmin . byAuth6 = 5
SIDAdmin . dwFirstSubAuth = 32
SIDAdmin . dwsecondSubAuth = 544

n SIDAdmin est un entier système = & SIDAdmin

SI n SIDAdmin <> 0 ALORS
// Parcours de la liste des groupes
s ListeGroupes est une chaîne = ""
dwGroup est un entier
n SID1 est un entier système
POUR
dwGroup = 1 A n NbGroupes
n SID1 = tabInfoGroupe [ dwGroup ]: pSID
SI AppelDLL32 ( "advapi32" , "EqualSid" , n SID1 , n SIDAdmin ) ALORS
b Admin = Vrai
FIN
FIN

SINON
b Admin = Faux
FIN

AppelDLL32 ( "kernel32" , "HeapFree" , ghProcessHeap , 0 , pBuffer )
pBuffer = Null

RENVOYER b Admin





Liste des codes sources
®2006 - codel5g.com