Folgende "Fehlerquellen" sind bekannt:
-Prozess vom User System kann/soll mann nicht terminieren. (Ist ok, deswegen laufen alle Prozesse als Administrator)
-Prozess von einem anderen User kann/soll man nicht terminieren. (Ist ok, alle laufen im User Kontext Administrator)
Das ist noch nicht zwingend ok, der Administrator ist ja auch nicht von Haus aus allmächtig, sei es wegen
UAC ab Vista oder wegen fehlender Privileges. Selbst ein Service, der als LocalSystem läuft und mehr darf als ein Admin, darf ohne weiteres auch noch nicht alles.
Frage 1: um welches
OS handelt es sich?
Frage 2: Hat der Guard evtl. noch kein SeDebugPrivilege? Aber der Service läuft ja vermutlich als LocalSystem und ist somit noch "über" dem Admin. Also: SeDebugPrivilege nicht planlos verwenden, aber schauen ob es notwendig sein könnte.
Weiter mit noch was einfacherem... aus der
Doku:
Zitat:
The
handle must have the PROCESS_TERMINATE
access right.
Frage 3: Prüfst Du, ober der
Handle, den Du TerminateProcess übergibst, überhaupt korrekt erhalten wurde? Oder schlägt der fehl, loggst Du dann GetLastError? Ich weiß, eigentlich eine dumme Frage, aber Du glaubst nicht wie oft hier an der Fehlerbehandlung geschludert wird...