![]() |
CreateProcessAsUser
Kann mir mal bitte jemand ein Beispiel geben, wie ich mit
![]() Ist irgendwie zu kompüliziert ... :? Soweit ich es verstanden hab', muss es CreateProcessAsUser sein, weil ich einen System-Dienst habe, und meine Anwendung aber unter meinem Benutzer laufen soll ... Oh, sry ... fünffachthread ... :oops: :oops: :oops: :oops: :oops: Doofer IE ... :evil: |
Re: CreateProcessAsUser
Das Forum hat auch eine Suche. ;)
|
Re: CreateProcessAsUser
Zitat:
Nur ist bei allem, was ich gefunden habe, alles daraufhinausgelaufen, dass statt CreateProcessAsUser CreateProcessWithLogonW verwendet wird ... (Was mir afaik nicht weiterhilft) |
Re: CreateProcessAsUser
PSDK sagt: The CreateProcessWithLogonW function is similar to CreateProcessAsUser, except that the caller does not need to call the LogonUser function to authenticate the user and get a token. Du mußt eben LogonUser() bei der gewünschten Funktion explizit aufrufen - danach das erhaltene Token an die Funktion übergeben. Außerdem existiert CreateProcessWithLogonW() erst ab Windows 2000. Außerdem werden bestimmte Privilegien benötigt, die du um es maximalst kompatibel zu gestalten, vorher aktivieren solltest. Funktionen dazu für Dlephi gibt's wie Sand am Meer: PSDK meint: Typically, the process that calls the CreateProcessAsUser function must have the SE_ASSIGNPRIMARYTOKEN_NAME and SE_INCREASE_QUOTA_NAME privileges. However, if hToken is a restricted version of the caller's primary token, the SE_ASSIGNPRIMARYTOKEN_NAME privilege is not required. If the necessary privileges are not already enabled, CreateProcessAsUser enables them for the duration of the call. For more information, see Running with Special Privileges. Bei weiteren Fragen einfach fragen ;) ... notfalls PN an mich, weil ich nur unregelmäßig reinschaue. |
Re: CreateProcessAsUser
Zitat:
![]() |
Re: CreateProcessAsUser
Zitat:
|
Re: CreateProcessAsUser
Luckie, wo ist die Funktion EnablePrivilege deklariert?
Ich finde die irgendwie nicht ... P.S. Ich versuche verzweifelt, aus einem System-Prozess heraus eine normale Anwendung in meinem Benutzerkontext zu starten ... |
Re: CreateProcessAsUser
Zitat:
|
Re: CreateProcessAsUser
Delphi-Quellcode:
Stammt, glaube ich, ursprünglich von Nico oder so.
function EnablePrivilege(const Privilege: string; fEnable: Boolean; out
PreviousState: Boolean): DWORD; var Token : THandle; NewState : TTokenPrivileges; Luid : TLargeInteger; PrevState : TTokenPrivileges; Return : DWORD; begin PreviousState := True; if (GetVersion() > $80000000) then // Win9x Result := ERROR_SUCCESS else begin // WinNT if not OpenProcessToken(GetCurrentProcess(), MAXIMUM_ALLOWED, Token) then Result := GetLastError() else try if not LookupPrivilegeValue(nil, PChar(Privilege), Luid) then Result := GetLastError() else begin NewState.PrivilegeCount := 1; NewState.Privileges[0].Luid := Luid; if fEnable then NewState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED else NewState.Privileges[0].Attributes := 0; if not AdjustTokenPrivileges(Token, False, NewState, SizeOf(TTokenPrivileges), PrevState, Return) then Result := GetLastError() else begin Result := ERROR_SUCCESS; PreviousState := (PrevState.Privileges[0].Attributes and SE_PRIVILEGE_ENABLED <> 0); end; end; finally CloseHandle(Token); end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:16 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