杀死所有用户的msiexec

时间:2014-01-21 14:18:42

标签: c# process cmd windows-installer

我有一个安装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进程的任何帮助吗?

1 个答案:

答案 0 :(得分:0)

正如克里斯托弗所说,不建议尝试停止系统服务。相反,您可以使用较小的custom action that returns ERROR_INSTALL_USEREXIT取消安装。