J'utilise le code suivant (plusieurs variantes possibles) dans une page Web qui est censée tuer un processus sur le serveur :
Process scriptProc = new Process();
SecureString password = new SecureString();
password.AppendChar('p');
password.AppendChar('s');
password.AppendChar('s');
password.AppendChar('w');
password.AppendChar('d');
scriptProc.StartInfo.UserName = "mylocaluser";
scriptProc.StartInfo.Password = password;
scriptProc.StartInfo.FileName = @"C:\WINDOWS\System32\WScript.exe";
scriptProc.StartInfo.Arguments = @"c:\windows\system32\killMyApp.vbs";
scriptProc.StartInfo.UseShellExecute = false;
scriptProc.Start();
scriptProc.WaitForExit();
scriptProc.Close();
Le fichier VBS est censé tuer un autre processus w3wp.exe, qui a tendance à se bloquer. Il s'agit d'une ancienne application web que nous allons bientôt remplacer, mais en attendant, nous devons nous débrouiller et forcer l'application à s'arrêter lorsque cela se produit.
Je dois noter que tuer w3wp.exe n'est pas quelque chose que les professionnels de l'informatique font.
Ce qui se passe, c'est que WScript.exe est dans le gestionnaire de tâches à chaque fois que je lance la page de suppression, et il ne disparaît jamais.
Le processus WScript.exe (et j'en ai essayé d'autres comme psexec.exe) est exécuté en tant qu'utilisateur local avec des droits d'administrateur (et j'ai essayé d'autres types d'utilisateurs, y compris des administrateurs de domaine) lorsqu'il est exécuté depuis IIS, mais il fonctionne lorsqu'il est exécuté depuis la ligne de commande sur le serveur.