Open / SetProcessAffinityMask auf Prozess von meinem Dienst gestartet
-
21-09-2019 - |
Frage
In meinem manager.exe, ich versuche, die CPU-Auslastung meines worker.exe zu ändern, die durch meine service.exe gestartet wird. Service.exe läuft unter dem Systemkonto, während manager.exe wird unter dem in Benutzerkonto angemeldet läuft.
Wenn ich Open in manager.exe mit worker.exe PID aufrufen, bekomme ich NULL für procHandle:
GRIFF procHandle = Open (PROCESS_SET_INFORMATION, 0, pid);
Mit GetLastError () Ich sehe, dass ich einen Fehler Zugriff verweigert hätte.
Alle Möglichkeiten, um dies? Kann ich worker.exe irgendwie ändern andere Prozesse die volle Kontrolle über sich selbst zu gewähren?
Lösung
Sie sollten nicht auf Anruf OpenProcess
haben.
Der Dienst sollte bereits eine Voll Erlaubnis Handle für die Arbeiter aus, wenn es aufgerufen CreateProcessAsUser
oder CreateProcessWithLogonW
. Verwenden DuplicateHandle
eine Version des Griffs geeignet für die Verwendung durch den Manager-Prozess zu machen, und hat dann den Dienst senden, dass Griff an den Manager. Der Dienst hat bereits einen Griff an den Manager, nicht wahr? Es sei darauf müssen für DuplicateHandle
.
Oder der Manager den Dienst bitten, den Arbeitsprozess zu ändern.