par programme tuer un processus en vista/windows 7 en C#

Je veux tuer un processus par programme dans windows vista/windows 7 (je ne sais pas si il y a des problèmes importants dans la mise en œuvre du contrôle de compte d'utilisateur entre les deux pour faire une différence).

Droit maintenant, mon code ressemble à ceci:

  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);
   }

Je dois le faire parce que j'ai besoin pour s'assurer que si l'utilisateur bloque le programme ou le quitte brusquement, ce second processus est redémarré au redémarrage de l'application, ou si l'utilisateur veut changer les paramètres de ce processus secondaire.

Le code fonctionne très bien sous XP, mais ne fonctionne pas dans Windows 7 (et je suppose que dans Vista) avec un "accès refusé". À partir de ce que le tout-Puissant Google me l'a dit, j'ai besoin d'exécuter ma mise à mort de programme en tant qu'administrateur pour contourner ce problème, mais c'est juste de la faiblesse de la sauce. Les autres possibilités de réponse est d'utiliser LinkDemand, mais je ne comprends pas la page msdn pour LinkDemand comme il se rapporte à des procédés.

Que je pourrais passer le code dans un thread, mais qui a une foule d'autres difficultés inhérentes à ce que je ne veux vraiment pas à découvrir.

Kill() semble fonctionner très bien pour moi à la fois des processus créés par l'explorateur et la même application. Sous Vista ici en utilisateur limité.
Peut-être que c'est juste un windows 7 bug alors? Vous pouvez poster votre code dans une réponse? Parce que c'est juste incompréhensible pour moi.

OriginalL'auteur mmr | 2009-02-13