2012-03-01 172 views
0

我有一個非常關鍵的進程,它將在我的winform應用程序的後臺運行。防止強制殺死應用程序

如何防止用戶結束我的winform應用程序?

我想阻止用戶:

  • 一端從任務管理器
  • 關機過程中我的應用程序結束
  • 任何其他軟件相關方法的過程在電腦前殺死一個進程(當然,我不能阻止用戶按下他的CPU的電源按鈕)

我的代碼是在C#中,框架4,內置VS2010 Pro。

在此先感謝。

+1

用戶*擁有*他的電腦,爲什麼他應該被阻止殺死你的應用程序? – 2012-03-01 06:55:41

+0

@BasileStarynkevitch,因爲有重要的進程仍在運行_(強制結束它可能導致數據不準確)_,他可以在結束時關閉它。此外,公司擁有電腦,而不是用戶。 – 2012-03-01 06:59:35

+0

然後,公司的系統管理員總是可以並且可能合法地感興趣,以阻止您的流程。它變成一個社會問題(教導用戶和系統管理員避免這樣做)而不是技術問題。在某些情況下,需要重新啓動計算機....並且電源也可能停止運行... – 2012-03-01 07:02:08

回答

2

陳述您的「絕對」需要保持此過程運行,我真的建議將您的過程的關鍵部分從winforms應用程序中分離出來,並將此部分從用戶計算機移到公司服務器。
在這個服務器上寫一個服務這使您的重要工作保持活躍,並隨時隨地運行。
這些'絕對'要求只能在具有冗餘磁盤,ups單元的服務器機器上執行,並且必須通知系統管理員。

+0

+1如果找不到通知的系統管理員,則必須使用其中一個正常的系統管理員。 – 2012-03-01 15:31:56

1

不能絕對保證這些東西,但你可以得到一些你希望由什麼:

1)只有在Vista或更高版本的Windows是分配安全級別的進程中運行

2 )以管理員身份運行你的進程,因此它是最高的安全級別。

3)確保UAC(用戶帳戶控制)已打開。

4)關閉進入任務管理器的登錄的用戶帳戶(通過組策略)

5)提供沒有辦​​法登錄的用戶提升爲管理員,讓他不能運行任何東西有權阻止您的流程。

6)使用Shutdown script檢查您的進程正在運行並防止關閉。

2

基本上不可能阻止用戶殺死進程(你甚至可以殺死windows的shell的explorer.exe)。

因此,建議您編寫應用程序的方式應對用戶操作或崩潰。在你的情況下,在這個過程中進行可恢復的操作是明智的。