|
Beschreibung:
GetTokenInformation liest aus dem Access Token eines eingelogten Users Informationen aus (u.a. sur cette User). cet Funktion gibt es seulement sous NT-basierten Windowssystemen.
Deklaration:
DEF @GetTokenInformation(5) !advapi32,GetTokenInformation
paramètre:
1.paramètre: Handle des Access Token. cela Handle doit TOKEN_QUERY ($8) Zugriffrechte avons. Soll qui source des Tokens ermittelt volonté, ist aussi TOKEN_QUERY_SOURCE Access nötig ($10). 2.paramètre: un TOKEN_INFORMATION_CLASS Flag, qui angibt quelle Informationen ausgelesen volonté devoir. => -$1 = Ermittelt den Usernamen (den SID des Users) aus dem Token (TokenUser) -$2 = Ermittelt qui Gruppen (SID’s qui Gruppen), dans denen qui User Mitglied ist (TokenGroups). -$3 = Ermittelt qui Privilegien (LUID’s) et en Attribute, sur qui qui User verfügt (TokenPrivileges). -$4 = Ermittelt den User ou bien qui Gruppe (SID), qui beim Erstellen de Objekten comme propriétaire eingetragen wird (TokenOwner). -$5 = Ermittelt qui Primäre Gruppe (SID) des Users (TokenPrimaryGroup). -$6 = Ermittelt den DACL, qui beim Erzeugen de Objekten par den User comme Standard verwendet wird (TokenDefaultDacl). -$7 = Ermittelt qui source eines Token (TokenSource). -$8 = Ermittelt den Typ des Token (TokenType). -$9 = Ermittelt den Security Impersonation Level eines Impersonation Token (TokenImpersonationLevel).). -$10 = Ermittelt données sur qui ID des Token (TokenId), qui ID qui Session (AuthenticationId), den Typ des Token, den Impersonation Level eines Imoersonation Token (ImpersonationLevel), den verwendeten Speicherplatz (DynamicCharged), le nombre qui Gruppen im Token (GroupCount), le nombre qui Privilegien im Token (PrivilegeCount) et sur qui dernier Veränderung des Token (ModifiedId). 3.paramètre: une Bereichsvariable, qui qui angefragten données aufnimmt: si paramètre 2 $1 ist, ist cette paramètre une 8 Byte grand TOKEN_USER Struktur.=> -Bytes 0-3 = Adresse des SID des Users, den qui Token personifiziert. -Bytes 4-7 = Flags pour qui Attribute des SID’s des Users, zur Zeit pas genutzt. si paramètre 2 $2 ist, ist cette paramètre une TOKEN_GROUPS Struktur, qui aus einem Array aus SID_AND_ATTRIBUTES Strukturen et qui Nombre de Gruppen besteht: -Byte 0-3 = Nombre de Gruppen dans dem Array. -Byte 4-7 = Adresse des SID’s qui 1.Gruppe. -Byte 8-11 = Flags pour qui Attribute des SID’s qui 1. Gruppe: $1 = Gruppe peux pas gelöscht volonté (SE_GROUP_MANDATORY). $2 = Gruppe ist standardmäßig aktiviert (SE_GROUP_ENABLED_BY_DEFAULT). $4 = Gruppe ist aktiv (SE_GROUP_ENABLED). $8 = Gruppe peux un propriétaire de Objekten son (SE_GROUP_OWNER). $C0000000 = Gruppe est un Logonname (SE_GROUP_LOGON_ID). -Byte 12-15 = Adresse des SID’s qui 2.Gruppe. -Byte 16-19 = Flags pour qui Attribute des SID’s qui 2. Gruppe -.... si paramètre 2 $3 ist, ist cette paramètre une 4 Byte grand TOKEN_Owner Struktur.=> -Byte 0-3 = Nombre de Privilegien dans dem Array. -Byte 4-11 = LUID des 1.Privilegs. -Byte 12-15 = Flags pour qui Attribute des 1.Privilegs: $0 = Privileg ist deaktiviert. $1 = Privileg ist standardmäßig aktiviert. $2 = Privileg ist aktiviert. $80000000 = Privileg wurde zum Zugriff benutzt. -Byte 16-23 = LUID des 2.Privilegs. -Byte 24-27 = Flags pour qui Attribute des 2.Privilegs: -.... si paramètre 2 $4 ist, ist cette paramètre une 4 Byte grand TOKEN_OWNER Struktur.=> -Byte 0-3 = Adresse des SID’s des Users ou bien qui Gruppe, qui beim Erstellen de Objekten comme propriétaire eingetragen wird. si paramètre 2 $5 ist, ist cette paramètre une 4 Byte grand TOKEN_PRIMARY_GROUP Struktur.=> -Byte 0-3 = Adresse des SID’s qui Primären Gruppe des Users. si paramètre 2 $6 ist, ist cette paramètre une 4 Byte grand TOKEN_DEFAULT_DACL Struktur.=> -Byte 0-3 = Adresse des DACL’s, qui beim Erzeugen de Objekten par den User comme Standard verwendet wird. si paramètre 2 $7 ist, ist cette paramètre une 16 Byte grand TOKEN_SOURCE Struktur.=> -Byte 0-7 = 8 Byte großer Charakterstring, qui qui source des Token angibt. -Byte 8-15 = LUID qui source des Token. si paramètre 2 $8 ist, ist cette paramètre une 4 Byte grand TOKEN_TYPE Struktur, en LongInt Wert qui Art des Token angibt.=> -$1 = Primärer Token (TokenPrimary). -$2 = Impersonation Token (TokenImpersonation) si paramètre 2 $9 ist, ist cette paramètre une 4 Byte grand SECURITY_IMPERSONATION_LEVEL Struktur, en LongInt Wert den Impersonation Level des Token angibt, si cette un Impersonation Token ist. => -$1 = SecurityAnonymous -$2 = SecurityIdentification -$3 = SecurityImpersonation -$4 = SecurityDelegation si paramètre 2 $10 ist, ist cette paramètre une 52 Byte grand TOKEN_STATISTICS Struktur.=> -Byte 0-7 = LUID, qui deie ID des Token repräsentiert. -Byte 8-15 = LUID, qui qui Session repräsentiert. -Byte 16-19 = Ablaufzeit des Token. Zur Zeit pas soutenu. -Byte 20-23 = Flag pour qui Art des Token. $1 = Primärer Token (TokenPrimary). $2 = Impersonation Token (TokenImpersonation) -Byte 24-27 = Impersonation Level des Token, si cette un Impersonation Token ist. $1 = SecurityAnonymous $2 = SecurityIdentification $3 = SecurityImpersonation $4 = SecurityDelegation -Byte 28-31 = qui Nombre de Bytes, qui zum Sauver de Primärer Gruppe et DACL reserviert sommes. -Byte 32-35 = qui Nombre de Bytes, qui im reservierten Speicherbereich de Primärer Gruppe et DACL encore libre sommes. -Byte 36-39 = Nombre de Gruppen im Token comme LongInt. -Byte 40-43 = Nombre de Privilegien im Token comme LongInt. -Byte 44-51 = LUID qui sich chaque la fois ändert, si sich quelque chose im Token modifié. 4.paramètre: la taille dans Bytes des Bereichs aus paramètre 3. 5.paramètre: 4 Byte Bereichsvariable, qui le nombre qui pour paramètre 3 nécessaire Bytes aufnimmt. Ist cet numéro größer comme paramètre 4, volonté aucun données dans paramètre 3 übertragen et qui Funktion schlägt fehl.
Rückgabewert:
1 chez Erfolg, 0 chez faute.
Beispiele:
KompilierenMarqueSéparationDEF @OpenProcessToken(3) !"advapi32","OpenProcessToken"
DEF @GetTokenInformation(5) !"advapi32","GetTokenInformation"
DEF @GetCurrentProcess(0) !"kernel32","GetCurrentProcess" Ermittel das Handle des aktiven Prozesses.
DEF @CloseHandle(1) !"kernel32","CloseHandle" Schließt ein Handle (Programm).
DEF @GetLastError(0) !"kernel32","GetLastError" Liefert letzten API Fehler.
DEF @LookupAccountSid(7) !"ADVAPI32","LookupAccountSidA"
DEF @IsValidSid(1) !"ADVAPI32","IsValidSid"
DEF @LookupPrivilegeName(4) !"advapi32","LookupPrivilegeNameA" Ermittelt aus dem Luid eines Privilegs dessen Namen.
DEF @CopyMemory(3) !"kernel32","RtlMoveMemory"
DEF @GetLengthSid(1) !"advapi32","GetLengthSid"
Declare Token#,Token&,PSID#,Erforderlich#,Zähler2&,SIDFlags&
Declare Erforderlich&,Fehler&,PSID&,System$,Zähler&,Attribute$
Declare ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#
Declare User$,PRIVLUID#,SID_STRUC#
Windowstyle 31
WindowTitle "Informationen im aktuellen Token"
Window 0,0-%MAXX,%MAXY-40
DIM Token#,4
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
LET Fehler&=@OpenProcessToken(@GetCurrentProcess(),$8,Token#)
ADDSTRING "Fehlercode OpenProcessToken="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Let Token&=@LONG(Token#,0)
Dispose Token#
ADDSTRING "Handle des Token="+@STR$(Token&)
DIM Erforderlich#,4
DIM PSID#,1
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,1,PSID#,1,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Addstring "Erforderliche Bufferlänge="+@STR$(@LONG(Erforderlich#,0))
Let Erforderlich&=@LONG(Erforderlich#,0)
Dispose PSID#
DIM PSID#,Erforderlich&
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,1,PSID#,Erforderlich&,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
DIM ACCOUNT_NAME#,256
DIM SIZE_ACCOUNT#,4
DIM Domain#,256
DIM SIZE_DOMAIN#,4
DIM SID_NAME_USE#,4
Clear SID_NAME_USE#
Clear ACCOUNT_NAME#
Clear Domain#
Long SIZE_ACCOUNT#,0=255
LONG SIZE_DOMAIN#,0=255
LET System$=""
LET FEHLER&=@LookupAccountSid(@ADDR(System$),@LONG(PSID#,0),ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
ADDSTRING "Fehlercode LookupAccountSid="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
ADDSTRING "Eigentümer des Token="+@String$(ACCOUNT_NAME#,0)
Print "Eigentümer des Token="+@String$(ACCOUNT_NAME#,0)
LET USER$=@String$(ACCOUNT_NAME#,0)
Dispose PSID#
DIM PSID#,1
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,1,PSID#,1,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Addstring "Erforderliche Bufferlänge="+@STR$(@LONG(Erforderlich#,0))
Let Erforderlich&=@LONG(Erforderlich#,0)
Dispose PSID#
DIM PSID#,Erforderlich&
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,1,PSID#,Erforderlich&,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Clear SID_NAME_USE#
Clear ACCOUNT_NAME#
Clear Domain#
Long SIZE_ACCOUNT#,0=255
LONG SIZE_DOMAIN#,0=255
LET System$=""
LET FEHLER&=@LookupAccountSid(@ADDR(System$),@LONG(PSID#,0),ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
ADDSTRING "Fehlercode LookupAccountSid="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
ADDSTRING "Durch den Token personifizierter User="+@String$(ACCOUNT_NAME#,0)
Print "Durch den Token personifizierter User="+@String$(ACCOUNT_NAME#,0)
Dispose PSID#
DIM PSID#,1
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,8,PSID#,1,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Addstring "Erforderliche Bufferlänge="+@STR$(@LONG(Erforderlich#,0))
Let Erforderlich&=@LONG(Erforderlich#,0)
Dispose PSID#
DIM PSID#,Erforderlich&
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,8,PSID#,Erforderlich&,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
IF @Long(PSID#,0)=$1
ADDSTRING "Art des Token=Primärer Token"
elseif @Long(PSID#,0)=$2
ADDSTRING "Art des Token=Impersonation Token"
endif
Dispose PSID#
DIM PSID#,1
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,4,PSID#,1,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Addstring "Erforderliche Bufferlänge="+@STR$(@LONG(Erforderlich#,0))
Let Erforderlich&=@LONG(Erforderlich#,0)
Dispose PSID#
DIM PSID#,Erforderlich&
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,4,PSID#,Erforderlich&,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Clear SID_NAME_USE#
Clear ACCOUNT_NAME#
Clear Domain#
Long SIZE_ACCOUNT#,0=255
LONG SIZE_DOMAIN#,0=255
LET System$=""
LET FEHLER&=@LookupAccountSid(@ADDR(System$),@LONG(PSID#,0),ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
ADDSTRING "Fehlercode LookupAccountSid="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
ADDSTRING "Beim Erstellen von Objekten als Besitzer eingetragen="+@String$(ACCOUNT_NAME#,0)
Print "Beim Erstellen von Objekten als Besitzer eingetragen="+@String$(ACCOUNT_NAME#,0)
Dispose PSID#
DIM PSID#,1
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,3,PSID#,1,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Addstring "Erforderliche Bufferlänge="+@STR$(@LONG(Erforderlich#,0))
Let Erforderlich&=@LONG(Erforderlich#,0)
Dispose PSID#
DIM PSID#,Erforderlich&
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,3,PSID#,Erforderlich&,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Clear SID_NAME_USE#
Clear ACCOUNT_NAME#
Clear Domain#
Long SIZE_ACCOUNT#,0=255
LONG SIZE_DOMAIN#,0=255
LET System$=""
LET FEHLER&=@LookupAccountSid(@ADDR(System$),PSID#,ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
ADDSTRING "Fehlercode LookupAccountSid="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
ADDSTRING "Anzahl der Privilegien für "+User$+"="+@STR$(@LONG(PSID#,0))
LET Zähler&=0
Long SIZE_ACCOUNT#,0=255
lET System$=""
DIM PRIVLUID#,8
While @LONG(PSID#,0)>Zähler&
Long SIZE_ACCOUNT#,0=255
Clear ACCOUNT_NAME#,PRIVLUID#
LET PSID&=PSID#
Let Attribute$="("
@CopyMemory(PRIVLUID#,PSID&+Zähler&*12+4,8)
LET Fehler&=@LookupPrivilegeName(@ADDR(System$),PRIVLUID#,ACCOUNT_NAME#,SIZE_ACCOUNT#)
ADDSTRING "Fehlercode LookupPrivilegeName="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
ADDSTRING "Flags der Attribute des "+@STR$(@INT(Zähler&+1))+".Privilegs=$"+@Hex$(@LONG(PSID#,Zähler&*12+12))
IF @OR(@LONG(PSID#,Zähler&*12+12),$1)=@LONG(PSID#,Zähler&*12+12)
LET Attribute$=Attribute$+"sofort aktiv,"
endif
IF @OR(@LONG(PSID#,Zähler&*12+12),$2)=@LONG(PSID#,Zähler&*12+12)
LET Attribute$=Attribute$+"aktiv,"
endif
IF @OR(@LONG(PSID#,Zähler&*12+12),$80000000)=@LONG(PSID#,Zähler&*12+12)
LET Attribute$=Attribute$+"zum Zugriff benutzt,"
endif
IF @LONG(PSID#,Zähler&*12+12)=$0
LET Attribute$=Attribute$+"deaktiviert,"
endif
IF @LEN(Attribute$)>1
LET ATTRIBUTE$=@LEFT$(Attribute$,@LEN(Attribute$)-1)+")"
Else
LET ATTRIBUTE$=Attribute$+")"
endif
ADDSTRING User$+"s "+@STR$(@INT(Zähler&+1))+".Privileg="+@String$(ACCOUNT_NAME#,0)+" "+Attribute$
PRINT User$+"s "+@STR$(@INT(Zähler&+1))+".Privileg="+@String$(ACCOUNT_NAME#,0)+" "+Attribute$
Let Zähler&=Zähler&+1
wend
Dispose PRIVLUID#
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,2,PSID#,1,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Addstring "Erforderliche Bufferlänge="+@STR$(@LONG(Erforderlich#,0))
Let Erforderlich&=@LONG(Erforderlich#,0)
Dispose PSID#
DIM PSID#,Erforderlich&
Clear PSID#
Clear Erforderlich#
Let Fehler&=@GetTokenInformation(Token&,2,PSID#,Erforderlich&,Erforderlich#)
ADDSTRING "Fehlercode GetTokenInformation="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
ADDSTRING "Anzahl der Gruppen im Token="+@STR$(@LONG(PSID#,0))
LET Zähler&=0
LET Zähler2&=1
While @LONG(PSID#,0)>Zähler&
Clear SID_NAME_USE#
Clear ACCOUNT_NAME#
Clear Domain#
Long SIZE_ACCOUNT#,0=255
LONG SIZE_DOMAIN#,0=255
LET System$=""
ADDSTRING "Länge des SIDs der "+@STR$(Zähler&)+".Gruppe="+@STR$(@GetLengthSid(@LONG(PSID#,Zähler&*8+4)))
DIM SID_STRUC#,@GetLengthSid(@LONG(PSID#,Zähler&*8+4))
@CopyMemory(SID_STRUC#,@LONG(PSID#,Zähler&*8+4),@GetLengthSid(@LONG(PSID#,Zähler&*8+4)))
LET FEHLER&=@IsValidSid(SID_STRUC#)
ADDSTRING "Fehlercode IsValidSid="+@STR$(Fehler&)
LET FEHLER&=@LookupAccountSid(@ADDR(System$),SID_STRUC#,ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
Dispose SID_STRUC#
ADDSTRING "Fehlercode LookupAccountSid="+@STR$(Fehler&)
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
ADDSTRING @Str$(Zähler2&)+".Gruppe im Token="+@String$(ACCOUNT_NAME#,0)
ADDSTRING "Flags der Attribute der "+@Str$(Zähler2&)+".Gruppe im Token=$"+@HEX$(@LONG(PSID#,Zähler&*8+8))
LET Attribute$="("
LET SIDFlags&=@LONG(PSID#,Zähler&*8+8)
IF @OR(@LONG(PSID#,Zähler&*8+8),$1)=@LONG(PSID#,Zähler&*8+8)
LET Attribute$=Attribute$+"nicht löschbar,"
LET SIDFlags&=SIDFlags&-$1
endif
IF @OR(@LONG(PSID#,Zähler&*8+8),$2)=@LONG(PSID#,Zähler&*8+8)
LET Attribute$=Attribute$+"standardmäßig aktiviert,"
LET SIDFlags&=SIDFlags&-$2
endif
IF @OR(@LONG(PSID#,Zähler&*8+8),$4)=@LONG(PSID#,Zähler&*8+8)
LET Attribute$=Attribute$+"aktiviert,"
LET SIDFlags&=SIDFlags&-$4
endif
IF @OR(@LONG(PSID#,Zähler&*8+8),$8)=@LONG(PSID#,Zähler&*8+8)
LET Attribute$=Attribute$+"kann Eigentümer sein,"
LET SIDFlags&=SIDFlags&-$8
endif
IF @OR(@LONG(PSID#,Zähler&*8+8),$C0000000)=@LONG(PSID#,Zähler&*8+8)
LET Attribute$=Attribute$+"Logon ID,"
LET SIDFlags&=SIDFlags&-$C0000000
endif
IF SIDFlags&>0
ADDSTRING "Nicht berechnete Attribute=$"+@HEX$(SIDFlags&)
endif
IF @LEN(Attribute$)>1
LET ATTRIBUTE$=@LEFT$(Attribute$,@LEN(Attribute$)-1)+")"
Else
LET ATTRIBUTE$=Attribute$+")"
endif
Addstring "Attribute der "+@Str$(Zähler2&)+".Gruppe im Token="+Attribute$
Print @Str$(Zähler2&)+".Gruppe im Token="+@String$(ACCOUNT_NAME#,0)+" "+Attribute$
Let Zähler2&=Zähler2&+1
Let Fehler&=@GetLastError()
ADDSTRING "Letzter API Fehler="+@STR$(Fehler&)
Let Zähler&=Zähler&+1
Wend
Dispose ACCOUNT_NAME#
Dispose SIZE_ACCOUNT#
Dispose Domain#
Dispose SIZE_DOMAIN#
Dispose SID_NAME_USE#
Dispose PSID#
Dispose Erforderlich#
LET FEHLER&=@CloseHandle(Token&)
ADDSTRING "Fehlercode Clo le=" +@ STR$(Fehler& )
@ EDITBOX("Rückgaben", 1)
[keywords:787e66d1bf] Security Token Access User données Informationen Benutzer Gruppen Primäre Gruppe propriétaire Owner Privileg Privilegien Art Informationen Gruppe Login eingelogt eingelogter [/keywords:787e66d1bf] |
|