programmatisch töten einen Prozess in vista/windows 7 in C#

Möchte ich töte einen Prozess programmgesteuert in vista/windows 7 (ich bin mir nicht sicher, ob es erhebliche Probleme bei der Umsetzung der UAC zwischen den beiden einen Unterschied zu machen).

Recht jetzt mein code sieht wie folgt aus:

  if(killProcess){
      System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName("MyProcessName");
       //Before starting the new process make sure no other MyProcessName is running.
        foreach (System.Diagnostics.Process p in process)
        {
            p.Kill();
        }

        myProcess = System.Diagnostics.Process.Start(psi);
   }

Habe ich zu tun, weil ich brauche zu machen sicher, dass, wenn der Benutzer das Programm stürzt ab oder beendet sich schlagartig, dieser sekundäre Vorgang wird gestartet, wenn die Anwendung neu gestartet wird, oder wenn der Nutzer will, um die Parameter zu ändern, der für diese sekundären Prozess.

Funktioniert der code einwandfrei in XP aber nicht in Windows 7 (und ich nehme an, in Vista) mit einem "Zugriff verweigert" - Nachricht. Von dem, was der allmächtige Google hat mir gesagt, ich brauche, um mein töten-Programm als administrator, dieses problem zu umgehen, aber das ist einfach nur schwach Soße. Die andere mögliche Antwort ist die Verwendung linkdemand-Anweisung, aber ich verstehe nicht, auf der msdn-Seite für linkdemand-Anweisung wie es sich auf Prozesse.

Konnte ich verschieben Sie den code in einen thread, aber das hat eine ganze Reihe von anderen Schwierigkeiten, die es zu ihm, dass ich wirklich nicht wollen, zu entdecken.

  • Kill() scheint zu funktionieren gut für mich, sowohl für die Prozesse erstellt von explorer und der gleichen app. Mit Vista hier im eingeschränkten Benutzerrechten.
  • Vielleicht ist es nur ein windows 7 Fehler? Kannst du deinen code in eine Antwort? Denn das ist nur verwirrend für mich.
InformationsquelleAutor mmr | 2009-02-13
Schreibe einen Kommentar