我有一个安装msi驱动程序的winform应用程序。我希望用户有一个“取消下载”按钮。 我尝试了很多方法以不同的方式进行杀戮而没有成功。
使用:
Process[] processesByName = Process.GetProcessesByName("msiexec.exe");
foreach (Process process in processesByName)
{
process.Kill();
}
它给了我“Win32Exception访问被拒绝”。
我尝试从cmd做到这一点,所以我可以在代码中使用它作为Process.Start(“cmd”,“taskkill .....”),但这给了我一个奇怪的答案:
C:\>taskkill /IM msiexec.exe
ERROR: The process "msiexec.exe" not found.
当然,我仍然在我的任务经理中看到它。 我想我的问题是msiexec.exe是在SYSTEM用户下而不是在我当前的用户下,但是使用来自特定用户的taskkill给了我:
C:\>TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM msiexec.exe
INFO: No tasks running with the specified criteria.
有关如何杀死所有用户的所有msiexec进程的任何帮助吗?
答案 0 :(得分:0)
正如克里斯托弗所说,不建议尝试停止系统服务。相反,您可以使用较小的custom action that returns ERROR_INSTALL_USEREXIT取消安装。