2012-05-29 82 views
1

可能重複:
How to effectively kill a process in C++ (Win32)?從C終止外部程序++代碼


我創建必須做的一項重要工作程序 - 它可能(很少)有資源與用戶可能無意中啓動的另一個程序(假設a.exe)發生衝突。
我想要做的是在執行剩下的工作之前殺死一個exe文件,如果它運行的話。
有沒有辦法阻止另一個程序/進程運行,從c + +(在Windows下運行)?
我希望可以有一些美麗的提升...
謝謝。

回答

3

如果你確定圖像名稱爲a.exe那麼它很簡單:

system("taskkill /F /IM a.exe >nul 2>&1"); 
+0

+1:是否要求OP。值得注意的是,這將嘗試並殺死所有匹配a.exe的進程 –

+0

唯一的問題是'taskkill.exe'不能保證是原始的,並且可能無法按預期工作。如果你需要保證,TerminateProcess會更好。 – chris

+0

我最後一條評論的最壞的情況是在不知道它的情況下,啓動一個與程序位於同一目錄中的'taskkill.exe',並且可能會爲其授予管理員權限(甚至超出該權限,具體取決於您的程序類型)做任何想做的事。 – chris

1

假設您正在使用Windows。

您可以使用.NET方法。我會把你的帖子鏈接到你。 https://stackoverflow.com/a/116098/1424790

如果你需要,我可以把帖子翻譯成C++(但我需要一些時間)。

+0

如果在C++中,我很想知道類似System.Diagnostics.Proccess.GetProcessesByName東西。我希望更好地針對我的過程(實際上是通過其目標文件夾,但是這可能要求太多),並且在任何程度上,我都希望在進程沒有運行時不會出錯(我捕獲了所有異常,但我仍然收到錯誤信息)。 – Thalia