 |
Beschreibung:
qui API LookupAccountName ermittelt aus dem Accountnamen et dem Namen des Systems den dazugehörigen SID (Security Identifier). cet API gibt es seulement sous NT-basierten Windowssystemen.
Deklaration:
DEF @LookupAccountName(7) !advapi32,LookupAccountNameA
paramètre:
1.paramètre: Adresse des Cordes, qui den Systemnamen contient ou bien 0 pour den aktuellen ordinateur.
2.paramètre: Adresse des Cordes, qui den Accountnamen contient.
3.paramètre: une ausreichend grand Bereichsvariable, qui den SID aufnimmt.
4.paramètre: une quatre Byte grand Bereichsvariable, dans qui qui Taille des dans paramètre 3 angegebenen Bereichs steht.
5.paramètre: une ausreichend grand Bereichsvariable, qui den Domainnamen aufnimmt, sur dem qui Accountname gelistet ist.
6.paramètre: une quatre Byte grand Bereichsvariable, dans qui qui Taille des dans paramètre 5 angegebenen Bereichs steht.
7.paramètre: SID_NAME_USE Struktur ou bien 4 Byte grand Bereichsvariable, qui une Flag pour qui Art des Accounts aufnimmt, si le 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 chez Erfolg, 0 chez faute.
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 faute.
DEF @ZeroMemory(2) ! "Kernel32","RtlZeroMemory"
DEF @CloseHandle(1) !"kernel32","CloseHandle" Schließt un Handle (Programme).
DEF @CreateProcessWithLogonW(11) !"advapi32","CreateProcessWithLogonW"
DEF @MultiByteToWideChar(6) !"kernel32","MultiByteToWideChar"
DEF @GetACP(0) !"kernel32","GetACP"
Déclarer Protokoll&,FEHLER&,DOMAIN$,SID_Size#,lpStartupInfo#,lpProcessInformation#
Déclarer lpCommandLine#,DOMAINNAME_SIZE_ADDR#
Déclarer 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 qui Procédure zum Impersonifizieren anderer User")
Paramètres PUSERNAME$,PPASSWORT$,PPROGRAMM$
Déclarer PUSERNAME#,PPASSWORT#,PPROGRAMM#,Domainw#
CLEAR SID#,DOMAIN#,SID_TYPE_INDICATOR#,DOMAIN#,SID#,DOMAINNAME_SIZE_ADDR#
Long 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 faute: "+@str$(@GetLastError()))
Faible lpStartupInfo#,68
ZeroMemory(lpStartupinfo#,68)
Long lpStartupInfo#,0=68
Faible lpProcessInformation#,16
Faible 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 faute: "+@str$(@GetLastError()))
Dispose Domainw#
Dispose PPROGRAMM#
Dispose PUSERNAME#
Dispose PPASSWORT#
Dispose lpStartupInfo#
Dispose lpProcessInformation#
Dispose lpCommandLine#
@ADDSTRING(Protokoll&,"Ende qui Procédure zum Impersonifizieren anderer User")
ENDPROC
CLS
LET Protokoll&=@createlistbox(%HWND,»,10,10,600,400)
StartWithUserRights @INPUT$("Bitte une Usernamen eingeben: ","Login nom?",»),@INPUT$("Bitte cela Mot de passe en supplément eingeben: ","Passwort?",»),,@LoadFile$("EXE auswählen","*.EXE")
Dispose DOMAIN#
Dispose SID_Size#
Dispose DOMAINNAME_SIZE_ADDR#
Dispose SID_TYPE_INDICATOR#
Dispose SID#
Waitinput
[keywords:9dad938fef] SID Security Identifier Nutzer Benutzer Domain ermitteln herausbekommen erfahren Gruppe Gruppen Groups Usernamen Accountnamen Account User String Text [/keywords:9dad938fef] |
|