|
Descripción:
El API LookupAccountName ermittelt de el Accountnamen y el Namen des Systems el dazugehörigen SID (Security Identifier). Diese API hay sólo bajo NT-basierten Windowssystemen.
Deklaration:
DEF @LookupAccountName(7) !advapi32,LookupAccountNameA
Parámetro:
1.Parámetro: Adresse des Cuerdas, el el Systemnamen enthält oder 0 para el aktuellen Computer. 2.Parámetro: Adresse des Cuerdas, el el Accountnamen enthält. 3.Parámetro: Un ausreichend große Bereichsvariable, el el SID aufnimmt. 4.Parámetro: Un vier Byte große Bereichsvariable, en el el Größe des en Parámetro 3 angegebenen Bereichs es. 5.Parámetro: Un ausreichend große Bereichsvariable, el el Domainnamen aufnimmt, en el el Accountname gelistet es. 6.Parámetro: Un vier Byte große Bereichsvariable, en el el Größe des en Parámetro 5 angegebenen Bereichs es. 7.Parámetro: SID_NAME_USE Struktur oder 4 Byte große Bereichsvariable, el una Flag para el Art des Accounts aufnimmt, si la Función 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 En Erfolg, 0 en Fehler.
Beispiele:
DEF @LookupAccountName(7) !"advapi32","LookupAccountNameA"
DEF @LogonUser(6) !"advapi32","LogonUserA"
DEF @CreateProcessAsUser(11) !"advapi32","CreateProcessAsUserA"
DEF @SetLastError(1) !"kernel32","SetLastError"
DEF @GetLastError(0) !"kernel32","GetLastError" Liefert letzten API Fehler.
DEF @ZeroMemory(2) ! "Kernel32","RtlZeroMemory"
DEF @CloseHandle(1) !"kernel32","CloseHandle" Schließt una Handle (Programa).
DEF @CreateProcessWithLogonW(11) !"advapi32","CreateProcessWithLogonW"
DEF @MultiByteToWideChar(6) !"kernel32","MultiByteToWideChar"
DEF @GetACP(0) !"kernel32","GetACP"
Declarar Protokoll&,FEHLER&,DOMAIN$,SID_Size#,lpStartupInfo#,lpProcessInformation#
Declarar lpCommandLine#,DOMAINNAME_SIZE_ADDR#
Declarar SID#,DOMAIN#,SID_TYPE_INDICATOR#,DOMAIN#,Attribut#,ALLPRIVS#,COUNT#,SID#
DIM DOMAIN#,256
DIM SID#,800
DIM SID_Size#,4
DIM DOMAINNAME_SIZE_ADDR#,4
DIM SID_TYPE_INDICATOR#,256
Proc StartWithUserRights
@ADDSTRING(Protokoll&,"Start el Procedimiento para Impersonifizieren otro User")
Parámetros PUSERNAME$,PPASSWORT$,PPROGRAMM$
Declarar PUSERNAME#,PPASSWORT#,PPROGRAMM#,Domainw#
CLEAR SID#,DOMAIN#,SID_TYPE_INDICATOR#,DOMAIN#,SID#,DOMAINNAME_SIZE_ADDR#
Largo SID_Size#,0=800
LONG DOMAINNAME_SIZE_ADDR#,0=255
LET Fehler&=@LookupAccountName(0,@addr(PUSERNAME$),SID#,SID_Size#,DOMAIN#,DOMAINNAME_SIZE_ADDR#,SID_TYPE_INDICATOR#)
@ADDSTRING(Protokoll&,"Fehler LookupAccountName: "+@str$(Fehler&))
LET DOMAIN$=@STRING$(DOMAIN#,0)
@ADDSTRING(Protokoll&,"Domain: "+DOMAIN$)
LET PPROGRAMM$=@ShortName$(PPROGRAMM$)
DIM PPROGRAMM#,(@LEN(PPROGRAMM$)*2)+1
DIM PUSERNAME#,(@LEN(PUSERNAME$)*2)+1
DIM PPASSWORT#,(@LEN(PPASSWORT$)*2)+1
DIM Domainw#,(@LEN(Domain$)*2)+1
LET Fehler&=@MultiByteToWideChar(@GetACP(),2,@addr(PPROGRAMM$),-1,PPROGRAMM#,(@LEN(PPROGRAMM$)*2)+1)
@ADDSTRING(Protokoll&,"Rückgabe de MultiByteToWideChar: "+@STR$(Fehler&))
LET Fehler&=@MultiByteToWideChar(@GetACP(),2,@addr(Domain$),-1,Domainw#,(@LEN(Domain$)*2)+1)
@ADDSTRING(Protokoll&,"Rückgabe de MultiByteToWideChar: "+@STR$(Fehler&))
LET Fehler&=@MultiByteToWideChar(@GetACP(),2,@addr(PUSERNAME$),-1,PUSERNAME#,(@LEN(PUSERNAME$)*2)+1)
@ADDSTRING(Protokoll&,"Rückgabe de MultiByteToWideChar: "+@STR$(Fehler&))
LET Fehler&=@MultiByteToWideChar(@GetACP(),2,@addr(PPASSWORT$),-1,PPASSWORT#,(@LEN(PPASSWORT$)*2)+1)
@ADDSTRING(Protokoll&,"Rückgabe de MultiByteToWideChar: "+@STR$(Fehler&))
@SetLastError(0)
@ADDSTRING(Protokoll&,"Letzter API Fehler: "+@str$(@GetLastError()))
Dim lpStartupInfo#,68
ZeroMemory(lpStartupinfo#,68)
Largo lpStartupInfo#,0=68
Dim lpProcessInformation#,16
Dim lpCommandLine#,@len(PPROGRAMM$)+1
ZeroMemory(lpProcessInformation#,16)
String lpCommandLine#,0=PPROGRAMM$
@CreateProcessWithLogonW(PUSERNAME#,Domainw#,PPASSWORT#,0,0,PPROGRAMM#,0,0,0,lpStartupInfo#,lpProcessInformation#)
@ADDSTRING(Protokoll&,"Letzter API Fehler: "+@str$(@GetLastError()))
Disponer Domainw#
Disponer PPROGRAMM#
Disponer PUSERNAME#
Disponer PPASSWORT#
Disponer lpStartupInfo#
Disponer lpProcessInformation#
Disponer lpCommandLine#
@ADDSTRING(Protokoll&,"Ende el Procedimiento para Impersonifizieren otro User")
ENDPROC
CLS
LET Protokoll&=@createlistbox(%HWND,"",10,10,600,400)
StartWithUserRights @INPUT$("Bitte una Usernamen eingeben: ","Login Name?",""),@INPUT$("Bitte el Contraseña dazu eingeben: ","Passwort?",""),,@LoadFile$("EXE auswählen","*.EXE")
Disponer DOMAIN#
Disponer SID_Size#
Disponer DOMAINNAME_SIZE_ADDR#
Disponer SID_TYPE_INDICATOR#
Disponer SID#
Waitinput
[keywords:9dad938fef] SID Security Identifier Nutzer Benutzer Domain ermitteln herausbekommen erfahren Gruppe Gruppen Groups Usernamen Accountnamen Account User String Texto [/keywords:9dad938fef] |
|