![]() |
Ein gültiges Token für CreateProcessAsuser bekommen
![]()
Delphi-Quellcode:
Wie Motzi hier im Forum schon gesagt hat, braucht man dazu das Privileg 'SeTcbPrivilege'. Das bekomme ich auch. Aber LogonUser schlägt trotzdem fehl.
function RunAs(const User, PW, App, Params: string): DWORD;
var bReturn: Boolean; dwReturn: DWORD; hLogon: THandle; si: TStartupInfo; pi: TProcessInformation; begin SetLastError(0); if EnablePrivilege('SeTcbPrivilege') = 0 then begin bReturn := LogonUser(PChar(User), nil, PChar(PW), LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_WINNT50, hLogon); if bReturn then begin ZeroMemory(@si, sizeof(si)); si.cb := sizeof(si); ZeroMemory(@pi, sizeof(pi)); if CreateProcessAsUser(hLogon, PChar(App), PChar(Params), nil, nil, False, CREATE_DEFAULT_ERROR_MODE, nil, nil, si, pi) then dwReturn := 0 else dwReturn := GetLastError; CloseHandle(hLogon); ZeroMemory(@PW[1], length(PW)); end else dwReturn := GetLastError; end else dwReturn := GetLastError; result := dwReturn; end; Zu Testezwecken wollte ich einfach eine Konsole als Admin öffen (bin selber nur Benutzer). Als fehlermeldung bekomme ich immer: Zitat:
|
Re: Ein gültiges Token für CreateProcessAsuser bekommen
Moin Luckie,
unter Windows 2000 ist auch noch SE_TCB_NAME erforderlich. Woher hast Du eigentlich EnablePrivilege? |
Re: Ein gültiges Token für CreateProcessAsuser bekommen
Hatte ich mal von Nico für SeDebugPrivilege. Ich habe es verallgemeinert. Ist da ein Fehler drin?
Jetzt bekomme ich nach:
Delphi-Quellcode:
if (EnablePrivilege('SeTcbPrivilege') = 0) and (EnablePrivilege('SeTcbName') = 0)
Zitat:
|
Re: Ein gültiges Token für CreateProcessAsuser bekommen
Zitat:
![]() |
Re: Ein gültiges Token für CreateProcessAsuser bekommen
Letztendlich mache ich doch auch nichts anderes. Die Jedis setzten sogar noch nicht mal irgendwelche Privilegien. Ungetestet kann ich mir dann nicht vorstellen, dass deren Methode funktionieren sollte. :gruebel:
|
Re: Ein gültiges Token für CreateProcessAsuser bekommen
Zitat:
Edit: Ahh, ich hab gerade was gefunden. :) Zitat:
|
Re: Ein gültiges Token für CreateProcessAsuser bekommen
Zitat:
Zitat:
|
Re: Ein gültiges Token für CreateProcessAsuser bekommen
Das Problem ist, dass du das Privilege nicht haben wirst. Es ist ein Unterschied ob man ein Privilege _besitzt_ oder ob man es besitzt aber es nicht _aktiviert_ ist. Das Debug-Privilege besitzt man als Admin zB, aber es ist deaktiviert. Ergo kann man es aktivieren und es benutzen, anders sieht es bei SeTcbPrivilege aus. Das besitzt man standardmäßig nicht (auch nicht als Admin), die System-LogonSession hat es -> ein Service besitzt das Privilege und kann LogonUser aufrufen. Du kannst es auch als Admin haben, wenn du in den lokalen Sicherheitsrichtlinien den Benutzer bei "Einsetzen als Teil des Betriebssystems" einträgst.
Privilegien die man nicht besitzt kann man auch nicht aktivieren! |
Re: Ein gültiges Token für CreateProcessAsuser bekommen
Hmm also ich mach das immer so:
Delphi-Quellcode:
Hoffe das war auch das was gesucht war.
function CreateProcessWithLogonW(
lpUsername, lpDomain, lpPassword:PWideChar; dwLogonFlags:dword; lpApplicationName: PWideChar; lpCommandLine: PWideChar; dwCreationFlags: DWORD; lpEnvironment: Pointer; lpCurrentDirectory: PWideChar; const lpStartupInfo: tSTARTUPINFO; var lpProcessInformation: TProcessInformation): BOOL; stdcall; external 'advapi32.dll'; function StartProgramm(Benutzer:string;Passwort:string;Domain:string;EXE:string):boolean; var StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; begin result:=false; FillChar (StartupInfo, SizeOf(StartupInfo), #0); StartupInfo.cb := SizeOf(StartupInfo); if CreateProcessWithLogonW(StringToOleStr(Benutzer),StringToOleStr(Domain), StringToOleStr(Passwort), 0, StringToOleStr(Exe), nil, 0, nil, nil, StartupInfo, ProcessInfo) then result:=true; end; |
Re: Ein gültiges Token für CreateProcessAsuser bekommen
@Motzi: Dann habe ich da wohl Pech. Ich dachte, ich hätte sie zu mindest. :?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz