CreateProcessWithLogonW() Probleme -, Brauchen zum starten von sub-Prozessen mit den gleichen Benutzer

Ich habe ein Windows ausführbare Datei, die gestartet wird, innerhalb eines service durch den Aufruf CreateProcessWithLogonW() mit einer Reihe von angegebenen user-details.

Dieser funktioniert einwandfrei und der Prozess gestartet wird, wie erwartet. Jedoch, wenn dieser Prozess versucht, zu starten andere Prozesse selbst, die derzeit nur mit CreateProcess (), diese beginnen dann sterben sofort - Sie sind ausführbare Dateien, die erfordern den desktop-Zugriff.

Nach dem Lesen auf Microsoft ' s Artikel über CreateProcess() - http://msdn.microsoft.com/en-us/library/ms682425(VS.85).aspx

Denke ich kann sehen, warum dies geschieht, und es macht Sinn, zu einem gewissen Grad. CreateProcess() weiß der aufrufende Prozess wird die Identität eines Benutzers so, es nutzt seine übergeordnete Prozess, der in diesem Fall ist das Lokale System-Konto. Aber natürlich ist alles, was Sie ausführen in das lokale system-Konto keinen Zugang haben, die wir brauchen, so startete der Prozess stirbt.

Seltsam, wenn ich zuvor mit LogonUser() und CreateProcessAsUser() zu starten, die erste ausführbare Datei im service, es hat gut funktioniert. Aber ich hatte dies zu ändern, um die CreateProcessWithLogonW () - aufgrund von Problemen mit nicht mit die richtigen Berechtigungen.

Weiß jemand eine Lösung für dieses? Ich habe gesehen, sprechen die an anderer Stelle auf dem web, aber nicht mit einer endgültigen Lösung. Es scheint, dass ich möglicherweise müssen Sie den token des Benutzers, ich bin die Anmeldung mit in CreateProcessWithLogonW() mit, so kann ich es verwenden, um das starten der anderen Prozesse später? Aber ich habe keine Möglichkeit, halten Sie dieses token, kann das sein retreived für den aktuellen Benutzer in irgendeiner Weise?

Jede Hilfe wäre sehr geschätzt, danke 🙂

InformationsquelleAutor Adam Cobb | 2009-02-27
Schreibe einen Kommentar