|
Descripción:
GetTokenInformation liest de el Access Token uno eingelogten Users Informationen de (u.a. encima esta User). Diese Función hay sólo bajo NT-basierten Windowssystemen.
Deklaration:
DEF @GetTokenInformation(5) !advapi32,GetTokenInformation
Parámetro:
1.Parámetro: Handle des Access Token. Das Handle muß TOKEN_QUERY ($8) Zugriffrechte haben. Soll el Quelle des Tokens ermittelt voluntad, es auch TOKEN_QUERY_SOURCE Access nötig ($10). 2.Parámetro: Ein TOKEN_INFORMATION_CLASS Flag, el angibt welche Informationen ausgelesen voluntad debería. => -$1 = Ermittelt el Usernamen (el SID des Users) de el Token (TokenUser) -$2 = Ermittelt el Gruppen (SID’s el Gruppen), en denen el User Mitglied es (TokenGroups). -$3 = Ermittelt el Privilegien (LUID’s) y deren Atributos, en el User verfügt (TokenPrivileges). -$4 = Ermittelt el User o Gruppe (SID), cuando el Erstellen de Objekten como Eigentümer eingetragen se (TokenOwner). -$5 = Ermittelt el Primäre Gruppe (SID) des Users (TokenPrimaryGroup). -$6 = Ermittelt el DACL, el beim Erzeugen de Objekten por el User como Standard verwendet se (TokenDefaultDacl). -$7 = Ermittelt el Quelle uno Token (TokenSource). -$8 = Ermittelt el Typ des Token (TokenType). -$9 = Ermittelt el Security Impersonation Level uno Impersonation Token (TokenImpersonationLevel).). -$10 = Ermittelt Daten en ID des Token (TokenId), el ID el Session (AuthenticationId), el Typ des Token, el Impersonation Level uno Imoersonation Token (ImpersonationLevel), el verwendeten Speicherplatz (DynamicCharged), el número el Gruppen en el Token (GroupCount), el número el Privilegien en el Token (PrivilegeCount) y en letzte Veränderung des Token (ModifiedId). 3.Parámetro: Un Bereichsvariable, el el angefragten Daten aufnimmt: Wenn Parámetro 2 $1 es, es dieser Parámetro una 8 Byte große TOKEN_USER Struktur.=> -Bytes 0-3 = Adresse des SID des Users, el el Token personifiziert. -Bytes 4-7 = Flags para el Atributos des SID’s des Users, a Tiempo no genutzt. Wenn Parámetro 2 $2 es, es dieser Parámetro una TOKEN_GROUPS Struktur, de una Array de SID_AND_ATTRIBUTES Estructuras y Anzahl el Gruppen besteht: -Byte 0-3 = Anzahl el Gruppen en el Array. -Byte 4-7 = Adresse des SID’s el 1.Gruppe. -Byte 8-11 = Flags para el Atributos des SID’s el 1. Gruppe: $1 = Gruppe kann no gelöscht voluntad (SE_GROUP_MANDATORY). $2 = Gruppe es standardmäßig aktiviert (SE_GROUP_ENABLED_BY_DEFAULT). $4 = Gruppe es aktiv (SE_GROUP_ENABLED). $8 = Gruppe kann una Eigentümer de Objekten ser (SE_GROUP_OWNER). $C0000000 = Gruppe es una Logonname (SE_GROUP_LOGON_ID). -Byte 12-15 = Adresse des SID’s el 2.Gruppe. -Byte 16-19 = Flags para el Atributos des SID’s el 2. Gruppe -.... Wenn Parámetro 2 $3 es, es dieser Parámetro una 4 Byte große TOKEN_Owner Struktur.=> -Byte 0-3 = Anzahl el Privilegien en el Array. -Byte 4-11 = LUID des 1.Privilegs. -Byte 12-15 = Flags para el Atributos des 1.Privilegs: $0 = Privileg es deaktiviert. $1 = Privileg es standardmäßig aktiviert. $2 = Privileg es aktiviert. $80000000 = Privileg wurde para Zugriff benutzt. -Byte 16-23 = LUID des 2.Privilegs. -Byte 24-27 = Flags para el Atributos des 2.Privilegs: -.... Wenn Parámetro 2 $4 es, es dieser Parámetro una 4 Byte große TOKEN_OWNER Struktur.=> -Byte 0-3 = Adresse des SID’s des Users oder el Gruppe, cuando el Erstellen de Objekten como Eigentümer eingetragen se. Wenn Parámetro 2 $5 es, es dieser Parámetro una 4 Byte große TOKEN_PRIMARY_GROUP Struktur.=> -Byte 0-3 = Adresse des SID’s el Primären Gruppe des Users. Wenn Parámetro 2 $6 es, es dieser Parámetro una 4 Byte große TOKEN_DEFAULT_DACL Struktur.=> -Byte 0-3 = Adresse des DACL’s, el beim Erzeugen de Objekten por el User como Standard verwendet se. Wenn Parámetro 2 $7 es, es dieser Parámetro una 16 Byte große TOKEN_SOURCE Struktur.=> -Byte 0-7 = 8 Byte großer Charakterstring, el el Quelle des Token angibt. -Byte 8-15 = LUID el Quelle des Token. Wenn Parámetro 2 $8 es, es dieser Parámetro una 4 Byte große TOKEN_TYPE Struktur, deren LongInt Valor el Art des Token angibt.=> -$1 = Primärer Token (TokenPrimary). -$2 = Impersonation Token (TokenImpersonation) Wenn Parámetro 2 $9 es, es dieser Parámetro una 4 Byte große SECURITY_IMPERSONATION_LEVEL Struktur, deren LongInt Valor el Impersonation Level des Token angibt, si dieser una Impersonation Token es. => -$1 = SecurityAnonymous -$2 = SecurityIdentification -$3 = SecurityImpersonation -$4 = SecurityDelegation Wenn Parámetro 2 $10 es, es dieser Parámetro una 52 Byte große TOKEN_STATISTICS Struktur.=> -Byte 0-7 = LUID, el deie ID des Token repräsentiert. -Byte 8-15 = LUID, el el Session repräsentiert. -Byte 16-19 = Ablaufzeit des Token. En el momento no unterstützt. -Byte 20-23 = Flag para el Art des Token. $1 = Primärer Token (TokenPrimary). $2 = Impersonation Token (TokenImpersonation) -Byte 24-27 = Impersonation Level des Token, si dieser una Impersonation Token es. $1 = SecurityAnonymous $2 = SecurityIdentification $3 = SecurityImpersonation $4 = SecurityDelegation -Byte 28-31 = El Anzahl el Bytes, el para Guardar de Primärer Gruppe y DACL reserviert son. -Byte 32-35 = El Anzahl el Bytes, el en el reservierten Speicherbereich de Primärer Gruppe y DACL todavía frei son. -Byte 36-39 = Anzahl el Gruppen en el Token como LongInt. -Byte 40-43 = Anzahl el Privilegien en el Token como LongInt. -Byte 44-51 = LUID el se cada vez ändert, si se algo en el Token verändert. 4.Parámetro: El größe en Bytes des Bereichs de Parámetro 3. 5.Parámetro: 4 Byte Bereichsvariable, el el número el para Parámetro 3 benötigten Bytes aufnimmt. Ist esta Zahl größer como Parámetro 4, voluntad no Daten en Parámetro 3 übertragen y el Función schlägt fehl.
Rückgabewert:
1 en Erfolg, 0 en Fehler.
Beispiele:
KompilierenMarcaSeparaciónDEF @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 Daten Informationen Benutzer Gruppen Primäre Gruppe Eigentümer Owner Privileg Privilegien Art Informationen Gruppe Login eingelogt eingelogter [/keywords:787e66d1bf] |
|