| |
|
|
|
Beschreibung:
LookupAccountSid ermittelt aus dem Security Identifier (SID) den dazugehörigen User oder Gruppennamen und die erste Domain, auf der dieser SID Gefunden wurde.
Deklaration:
DEF @LookupAccountSid(7) !ADVAPI32,LookupAccountSidA
Parameter:
1.Parameter: Adresse des Strings, der den Systemnamen enthält oder 0 für den aktuellen Computer. 2.Parameter: Bereichsvariable mit dem SID. 3.Parameter: Bereichsvariable, die den Gruppen- oder Usernamen als String aufnimmt. 4.Parameter: 4 Byte große Bereichsvariable, die die größe des Bereichs von Parameter 3 enthält. Wurde Parameter 3 zu klein dimensioniert, steht hier später die erforderliche Größe von Parameter 3, wenn die Funktion zurückkehrt. 5.Parameter: Eine ausreichend große Bereichsvariable, die den Domainnamen aufnimmt. 6.Parameter: 4 Byte große Bereichsvariable, die die größe des Bereichs von Parameter 5 enthält. Wurde Parameter 5 zu klein dimensioniert, steht hier später die erforderliche Größe von Parameter 5, wenn die Funktion zurückkehrt. 7.Parameter: SID_NAME_USE Struktur oder 4 Byte große Bereichsvariable, die einen Flag für die Art des Accounts aufnimmt, wenn die Funktion zurückkehrt..=> -$1 = Username (SidTypeUser) -$2 = Gruppenname (SidTypeGroup) -$3 = Domain (SidTypeDomain) -$4 = SidTypeAlias -$5 = SidTypeWellKnownGroup -$6 = Gelöschter Account (SidTypeDeletedAccount) -$7 = SidTypeInvalid -$8 = SidTypeUnknown
Rückgabewert:
1 bei Erfolg, 0 bei Fehler
Beispiele:
KompilierenMarkierenSeparierenDEF @LookupAccountSid(7) !"ADVAPI32","LookupAccountSidA"
DEF @GetLastError(0) !"KERNEL32","GetLastError"
DEF @IsValidSid(1) !"ADVAPI32","IsValidSid"
Declare Fehler&
Proc GET_Group_Name
Parameters Name$
Declare SYS$,SEC_ID#,CBNAME_SIZE#,CBNAME#,ReferencedDomainName#,RDN_SIZE#
Declare SID_NAME_USE#,CBNAME$
SID wird erstellt.
IF @UPPER$(Name$)="JEDER"
DIM SEC_ID#,12
ElseIF @UPPER$(Name$)="ADMINISTRATOREN"
DIM SEC_ID#,16
else
DIM SEC_ID#,12
@Messagebox("Falscher Parameter!","Fehler",16)
endif
DIM CBNAME_SIZE#,4
DIM CBNAME#,256
DIM ReferencedDomainName#,256
DIM RDN_SIZE#,4
DIM SID_NAME_USE#,4
Clear SYS$,SID_NAME_USE#,CBNAME#,ReferencedDomainName#,SEC_ID#
IF @UPPER$(Name$)="JEDER"
LONG SEC_ID#,0=257
LONG SEC_ID#,4=16777216
LONG SEC_ID#,8=0
elseIF @UPPER$(Name$)="ADMINISTRATOREN"
LONG SEC_ID#,0=513
LONG SEC_ID#,4=83886080
LONG SEC_ID#,8=32
LONG SEC_ID#,12=544
endif
LONG CBNAME_SIZE#,0=255
LONG RDN_SIZE#,0=255
LET Fehler&=@IsValidSid(SEC_ID#)
ADDSTRING "Fehlercode IsValidSid="+@STR$(FEHLER&)
ADDSTRING "Letzter API Fehler="+@STR$(@GetLastError())
CASE FEHLER&=1 : LET FEHLER&=@LookupAccountSid(@ADDR(SYS$),SEC_ID#,CBNAME#,CBNAME_SIZE#,ReferencedDomainName#,RDN_SIZE#,SID_NAME_USE#)
ADDSTRING "Fehlercode LookupAccountSid="+@STR$(FEHLER&)
ADDSTRING "Letzter API Fehler="+@STR$(@GetLastError())
ADDSTRING @STRING$(CBNAME#,0)
LET CBNAME$=@STRING$(CBNAME#,0)
Dispose SID_NAME_USE#
Dispose RDN_SIZE#
Dispose ReferencedDomainName#
Dispose CBNAME#
DISPOSE SEC_ID#
DISPOSE CBNAME_SIZE#
Return CBNAME$
endproc
GET_Group_Name "Jeder"
PRINT @$(0)
@Editbox("Rückgaben",1)
[keywords:b6ef792c9b] SID Security Identifier Nutzer Benutzer Domain ermitteln herausbekommen erfahren Gruppe Gruppen Groups [/keywords:b6ef792c9b] |
|
|
| |
|
|