Programmgesteuertes Beenden eines Prozesses in Vista / Windows 7 in C #

9

Ich möchte einen Prozess programmatisch in vista / windows 7 beenden (ich bin nicht sicher, ob es signifikante Probleme bei der Implementierung der UAC zwischen den beiden gibt, um etwas zu bewirken).

Im Moment sieht mein Code so aus:

%Vor%

Ich muss dies tun, weil ich sicherstellen muss, dass der sekundäre Prozess beim Neustart der Anwendung neu gestartet wird oder wenn der Benutzer die Parameter für diesen sekundären Prozess ändern möchte, wenn der Benutzer das Programm abstürzt oder abrupt beendet.

Der Code funktioniert in XP gut, aber er schlägt in Windows 7 (und ich nehme in Vista an) mit der Meldung "Zugriff verweigert" fehl. Von dem, was der Allmächtige Google mir gesagt hat, muss ich mein Tötungsprogramm als Administrator ausführen, um dieses Problem zu umgehen, aber das ist nur schwache Soße. Die andere mögliche Antwort ist die Verwendung von LinkDemand, aber ich verstehe die msdn-Seite für LinkDemand nicht, da sie Prozesse betrifft.

Ich könnte den Code in einen Thread verschieben, aber das hat eine ganze Reihe anderer Schwierigkeiten, die ich nicht wirklich entdecken will.

    
mmr 13.02.2009, 04:13
quelle

2 Antworten

4

Sie haben Recht damit, dass Sie keine administrativen Privilegien haben. Sie können dies lösen, indem Sie einen Service unter dem lokalen Systembenutzer installieren und bei Bedarf einen benutzerdefinierten Befehl ausführen.

In Ihrer Windows-Formular-App:

%Vor%

In Ihrem Service:

%Vor%     
Andrew Ensley 13.02.2009, 04:25
quelle
0

Ich füge den Code für Simon Buchans Vorschlag hinzu. Es macht Sinn und sollte auch funktionieren, wenn man annimmt, dass Ihre Windows-Form den Prozess überhaupt erst ausgelöst hat.

Hier erstellen Sie den Prozess. Beachten Sie die Variable myProc. Das ist Ihr Griff:

%Vor%

Später, töte es einfach mit:

%Vor%     
Andrew Ensley 13.02.2009 05:30
quelle

Tags und Links