2014-01-21 25 views
0

我有一個安裝msi驅動程序的winform應用程序。我希望用戶有一個「取消下載」按鈕。 我嘗試了很多方式以不同的方式進行殺戮,但沒有成功。使用從所有用戶中殺死msiexec

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的是系統下的用戶,而不是根據我目前的用戶,但使用來自特定用戶的taskkill給我:

C:\>TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM msiexec.exe 
INFO: No tasks running with the specified criteria. 

如何殺死所有MSIEXEC進程任何幫助全部用戶?

+0

任意殺死windows installer服務可能會對系統造成非常不利的影響。你究竟想要做什麼? –

回答

0

正如克里斯托弗所說不建議嘗試停止系統服務。相反,您可以用一個小的custom action that returns ERROR_INSTALL_USEREXIT取消安裝。

+0

我的應用程序一個接一個地運行幾個msi,我只希望用戶能夠取消所有安裝而不必按每個msi windows安裝程序上的取消按鈕。 – user2254436