![]() |
Win XP: CreateProcessAsUser: Errorcode 1314
Hallo allesamt,
ich habe folgende Funktion, die eine Applikation unter einem bestimmten Benutzerkontext ausführen soll:
Delphi-Quellcode:
Beim Aufruf einer Beispiel-Applikation erhalte ich jedoch grundsätzlich bei CreateProcessAsUser den Errorcode 1314 (ERROR_PRIVILEGE_NOT_HELD) geliefert. Dabei ist der verwendete Benutzer genau der gleiche, unter dem ich normal arbeite. Wenn ich das Programm so ausführen kann, sollte es doch auch bei CreateProcessAsUser klappen. Was also fehlt, was ist falsch?
function RunProcess(ExePath:String;Param:String;Username,Domain,Password:String):Cardinal;
var StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; var TokenHandle:Cardinal; begin Result:=0; //Existiert dieses File? if not FileExists(ExePath) then raise Exception.CreateFmt('File "%s" existiert nicht!',[ExePath]); //User anmelden und Token erhalten if not LogOnUser(PChar(Username),PChar(Domain),PChar(Password),LOGON32_LOGON_INTERACTIVE,LOGON32_PROVIDER_DEFAULT,TokenHandle) then raise Exception.CreateFmt('LogonUser fehlgeschlagen! Errorcode: %d',[GetLastError]); //StartupInfo-Struktur initialisieren FillChar(StartupInfo, SizeOf(StartupInfo), #0); //Werte zuweisen StartupInfo.cb := SizeOf(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK; StartupInfo.wShowWindow := SW_SHOW; //Prozess starten if not CreateProcessAsUser( TokenHandle, @ExePath[1], NIL, NIL, NIL, True, NORMAL_PRIORITY_CLASS, NIL, NIL, StartupInfo, ProcessInfo) then raise Exception.CreateFmt('CreateProcessAsUser für "%s" fehlgeschlagen! Errorcode: %d',[ExePath,GetLastError]); //Auf Beendigung warten WaitForSingleObject(ProcessInfo.hProcess, INFINITE); //Exitcode des Prozesses ermitteln GetExitCodeProcess(ProcessInfo.hProcess, Result); //Handles freigeben if ProcessInfo.hProcess <> 0 then CloseHandle(ProcessInfo.hProcess); if ProcessInfo.hThread <> 0 then CloseHandle(ProcessInfo.hThread); end; Für Ideen wäre ich echt dankbar. Bis dann, Andreas |
Re: Win XP: CreateProcessAsUser: Errorcode 1314
Zitat:
Und Zitat:
![]() |
Re: Win XP: CreateProcessAsUser: Errorcode 1314
Aber bei mir bricht ja eben nicht LogonUser mit dieser Meldung ab, sondern CreateProcessAsUser.
CreateProcessWithLogonW finde ich gar nicht in der Windows-Unit. Ist das nicht eine .NET-Routine? Edit: Okay, schnappe mir mal deinen Code. Danke erstmal! :) Cu, Udontknow |
Re: Win XP: CreateProcessAsUser: Errorcode 1314
So, habe deine Routine getestet.
Grundsätzlich funktioniert CreateProcessWithLogonW, ABER: Ich habe bei diesem Aufruf nicht die Möglichkeit, die Konsolenapplikation (um solche geht es hier) in derselben Konsole wie die des aufrufenden Programms laufen zu lassen, es wird immer eine neue Applikationskonsole erzeugt, egal, was ich bei CreationFlags mitgebe. Zitat:
Ich denke, daß CreateProcessAsUser da schon richtig ist, aber ich muss eben nun herausfinden, welches Privileg denn genau nun fehlt. Irgendjemand noch eine Idee? Bis dann, Andreas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 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