Je veux tuer un processus par programme dans Vista/Windows 7 (Je ne suis pas sûr s'il y a des problèmes importants dans l'implémentation de l'UAC entre les deux pour faire une différence) .par programme tuer un processus dans Vista/Windows 7 en C#
En ce moment, mon code ressemble à:
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 je dois faire en sorte que si l'utilisateur bloque le programme ou sort brusquement, ce processus secondaire est redémarré lorsque l'application est redémarré, ou si l'utilisateur veut changer les paramètres de ce processus secondaire.
Le code fonctionne correctement sous XP, mais il échoue dans Windows 7 (et j'imagine sous Vista) avec un message 'accès refusé'. D'après ce que le Tout-Puissant Google m'a dit, je dois gérer mon programme de meurtre en tant qu'administrateur pour contourner ce problème, mais c'est juste une sauce faible. L'autre réponse possible est d'utiliser LinkDemand, mais je ne comprends pas la page msdn de LinkDemand en ce qui concerne les processus.
Je pourrais déplacer le code dans un fil, mais cela a toute une série 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 pour les processus créés par l'explorateur et la même application. Courir Vista ici dans l'utilisateur limité. –
Peut-être que c'est juste un bug de Windows 7 alors? Pouvez-vous poster votre code dans une réponse? Parce que c'est juste déconcertant pour moi. – mmr