我在C#中開發了一個應用程序。有沒有什麼辦法,如果用戶殺死了我的應用程序的任務管理器中的進程,那麼應用程序將自動重新啓動 我搜索了很多這種類型的事件,當進程從任務管理器手動終止時應該被觸發 感謝如何啓動我的C#應用程序再次如果用戶終止任務管理器的進程
回答
如果用戶殺死你的進程 - 這是相當多了。你不會得到任何事件,什麼都沒有。
你需要做的是有一個第二個進程運行在監視第一,偶爾輪詢正在運行的進程,並重新開始在它停止該事件的第一個列表。或者,您可以讓他們使用IPC來偶爾做心跳檢查,以避免查看整個進程列表。
當然,如果用戶首先殺死監視器進程,那麼除非兩個進程都監視對方並啓動無論哪個丟失,否則你不會真正得到任何地方,但現在你只是繞着圈子走。
雖然一般來說,這是一個壞主意。如果用戶想要停止你的過程,你應該讓他們。你爲什麼要阻止他們?
但是,如果我將開始另一個進程監視第一個,然後功能將被複制 – 2013-04-30 10:17:31
有什麼方法來啓動同一個應用程序的兩個過程,但使用不同的名字,這樣我可以處理好這個問題 – 2013-04-30 10:19:33
沒有必要啓動完全相同的流程兩次,只需編寫第二個小應用程序,其唯一目的是進行監控。 – PhonicUK 2013-04-30 10:24:08
唯一的解決辦法我看到的是另一種過程,手錶的主要過程和重新啓動它。我會在主進程中使用Mutex,並在監視進程中觀察該Mutex。釋放互斥意味着主進程被阻止。
/// <summary>
/// Main Program.
/// </summary>
class Program
{
static void Main(string[] args)
{
// Create a Mutex which so the watcher Process
using (var StartStopHandle = new Mutex(true, "MyApplication.exe"))
{
// Start the Watch process here.
Process.Start("MyWatchApplication.exe");
// Your Program Code...
}
}
}
在鐘錶工藝:
/// <summary>
/// Watching Process to restart the application.
/// </summary>
class Programm
{
static void Main(string[] args)
{
// Create a Mutex which so the watcher Process
using (var StartStopHandle = new Mutex(true, "MyApplication.exe"))
{
// Try to get Mutex ownership.
if (StartStopHandle.WaitOne())
{
// Start the Watch process here
Process.Start("MyApplication.exe");
// Quit after starting the Application.
}
}
}
}
親愛的你請詳細說明這段代碼 – 2013-04-30 10:27:59
爲了清晰起見,我添加了更多的代碼。作爲一個側面說明,這只是一個例子,並不是一個非常穩固的解決方案。 – Mecaveli 2013-04-30 12:06:21
- 1. 如何防止我的應用程序由任務管理器結束進程?
- 2. 如果應用程序管理器中的用戶停止應用程序,則希望重新啓動服務。
- 3. 如何防止從任務管理器關閉應用程序?
- 4. 限制非管理員用戶停止任務管理器中的進程C++
- 5. 如果客戶端進程在事務啓動後被終止
- 6. 代表您應用程序進程的任務管理器
- 7. 如果腳本被取消,如何終止從Ant任務啓動的進程?
- 8. 如何停止資源管理器啓動我的應用程序最大化?
- 9. 如何識別哪個應用程序用於在任務管理器中啓動excel進程
- 10. 應用程序通知在任務管理器終止應用程序後停止
- 11. 應用程序再次啓動
- 12. 避免再次啓動應用程序
- 13. 當我關閉應用程序時服務再次啓動
- 14. 如果服務未啓用,防止應用程序進展
- 15. 如何在應用程序啓動時停止後臺任務?
- 16. 如果設備啓動,我的應用後臺進程停止
- 17. 重新啓動通過任務管理器終止的Chrome應用/擴展程序
- 18. 用C程序啓動和終止cu
- 19. 如何在C#中的任務管理器中隱藏進程?
- 20. 任務管理器如何殺死應用程序?
- 21. 註銷Swing應用程序後,javaw.exe不會從任務管理器終止
- 22. 如何通過任務管理器清除我的應用程序中的SharedPreferences?
- 23. 防止從任務管理器(WPF應用程序)最大化
- 24. 如何在ruby中控制器(啓動/終止)後臺進程(服務器應用程序)
- 25. 如何在Windows 8中啓動任何應用程序時啓動我的C#應用程序?
- 26. 如何啓動android應用程序管理器
- 27. 程序終止,如果我使用scanf
- 28. 將應用程序從應用程序移動到任務管理器中的後臺進程
- 29. ios從我的應用程序啓動應用程序導致我的應用程序終止
- 30. android如何殺死一個進程或應用程序並檢測一些應用程序再次啓動
最後,如果用戶試圖努力不夠,他們將能夠殺死你的應用程序。你想達到什麼目的? Windows服務可能是一條需要考慮的路線。 – KingCronus 2013-04-30 10:09:25
你確定這是明智的嗎?如果我正在運行一個應用程序,每次我殺死它時都會重新啓動,我會感到非常憤怒。 – 2013-04-30 10:09:42
@PaulieWaulie Chrome通過大量的進程來實現這種竅門,如果任何一個失敗,似乎都會重啓對方...是的,這讓我很生氣。 – Oliver 2013-04-30 10:10:40