Systemprozess (0x000000) killen

eXasperation

Grünschnabel
Hallo zusammen!

Ich arbeite gerade an einem kleinen Tool, das lästige, immer wiederkehrende Prozesse automatisch findet und beendet... Es klappt in Testfällen soweit auch wunderbar, aber dennoch habe ich ein kleines aber störendes Problem:
Ich kann keine Systemprozesse beendet. Okay, soll verständlicherweise auch nicht so leicht gehen. Allerdings handelt es sich nicht wirklich um Systemprozesse, sondern nur um solche die unter "services.exe" laufen... Beispielsweise winvnc.exe. Versuche ich diesen zu beenden scheitere ich, was ich im Folgenden kurz demonstriere:

Code:
hProcess = OpenProcess( PROCESS_ALL_ACCESS, 0, pe32.th32ProcessID );
Diese Funktion gibt bei Erfolg ein Handle zurück mit dem man dann weitere Dinge anstellen kann.
Wenn es sich um einen Systemprozess handelt ist hProcess = 0x000000.

Code:
TerminateProcess( hProcess, 0 );
Diese Funktion beendet einen Prozess und liefert bei Erfolg einen Wert ungleich Null zurück, bei Misserfolg liefert sie Null.

Versuche ich nun auf einen Prozess wie winvnc.exe oder auch AppleMobileDeviceService.exe zuzugreifen, die wie gesagt unter services.exe laufen, dann bekomme ich als Handle 0x000000 zurück, das Porgramm hat sie also als Systemprozesse erkannt und TerminateProcess( 0x000000, 0 ) kann den Prozess nicht beenden. Wie also kann ich einen solchen Prozess trotzdem beenden..? Kennt sich jemand damit aus?

Bevor ihr euch über die Sinnhaftigkeit dieses Porgramms aufregt: Das ist nur ein Just-for-Fun Ding aus Langeweile... Hat schön mit Prozessen außerhalb von "services.exe" funktioniert und soll nun auch mit den darunterliegenden Prozessen funktionieren (: Der Process Explorer von Sysinternals ist ein schönes Tool um Prozesse und ihre Zugehörigkeit anzuzeigen.
 
Zurück