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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| Option Explicit
wscript.echo "Admin : " & IsAdmin()
Function IsAdmin()
'On Error Resume Next
'Résultat à déterminer
IsAdmin = False
'Les ruches utilisées
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
'Identifiant utilisateur (User ID)
Dim strRegKey, strRegValue, strCurrentUserID, strUserID
strRegKey = "Identities"
strRegValue = "Default User ID"
'SID utilisateur
Dim strSID, arrSID
'Groupes auxquels l'utilisateur appartient
Dim strRegGroupPolicy, strRegGroupMembership, strGroup, arrGroup, strGroupSID
strRegGroupPolicy = "SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\"
strRegGroupMembership = "\GroupMembership"
'Accès au registre
Dim objRegistry : Set objRegistry=GetObject("winmgmts:root\default:StdRegProv")
'Récupère l'identifiant (User ID) de l'utilisateur connecté
objRegistry.GetStringValue HKEY_CURRENT_USER, strRegKey, strRegValue, strCurrentUserID
'pour le comparer aux comptes enregistrés et ainsi déterminer le SID de l'utilisateur
objRegistry.EnumKey HKEY_USERS, "", arrSID
'Parcours des comptes enregistrés
For Each strSID In arrSID
'Omission des comptes systèmes ainsi que des comptes suffixés par _Classes
If strSID <> ".DEFAULT" And strSID <> "S-1-5-18" And _
strSID <> "S-1-5-19" And strSID <> "S-1-5-20" And _
Right(strSID, 8) <> "_Classes" Then
'Récupére le UserID du compte qui est peut être celui de l'utilisateur connecté
objRegistry.GetStringValue HKEY_USERS, strSID & "\" & strRegKey, strRegValue, strUserID
'Vérifie si les UserID correspondent
'et donc si le SID du compte parcouru est bien celui de l'utilisateur connecté
If strCurrentUserID = strUserID Then
'Liste les SID des groupes auquels appartient l'utilisateur
objRegistry.EnumValues HKEY_LOCAL_MACHINE, strRegGroupPolicy & strSID & strRegGroupMembership, arrGroup
For Each strGroup In arrGroup
'Regarde parmis les SID si le groupe Administrateurs (S-1-5-32-544) y figure
objRegistry.GetStringValue HKEY_LOCAL_MACHINE, strRegGroupPolicy & strSID & strRegGroupMembership, strGroup, strGroupSID
If strGroupSID = "S-1-5-32-544" Then
'Si oui l'utilisateur peut être considéré comme administrateur
IsAdmin = True
Exit Function
End If
Next
'Quitte, Admin ou pas, puisque le compte de l'utilisateur a bien été vérifié
Exit Function
End If
End If
Next
End Function |
Partager