標籤:c style class blog code a
以前製作的案頭鎖屏軟體雖然也禁用過工作管理員,但是採取的是比較笨的方法,而且對作業系統還有一定的危害。因為任務管理也是一個表單也就是說它中也是一個獨立進程,所以只需要強制性關閉這個進程即可以關閉工作管理員了,任務管理的進程名稱為“taskmgr”,在程式用一個單獨的計時器,每100毫秒遍曆一次系統開啟的所有的進程,但凡出現進程的名稱與工作管理員名稱相同直接關閉。這樣就可以間接的達到禁用任務管理的作用,然而這種方法不能夠常用,如果經常強制性的關閉任務管理的進程會錯亂作業系統的訊息處理。所以當時寫的案頭管理軟體就沒有真正的被實用起來。
本次實現禁用任務管理的原理是直接修改系統的註冊表,以達到讓工作管理員禁用的目的,修改工作管理員的登錄機碼為:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System
在這個項中添加一個鍵:DisableTaskmgr ,當值為1的則是禁用工作管理員,當值為0的時候則是啟用工作管理員,我的電腦預設是沒有system這個項的。
上面將原理已經介紹了,下面將列出如何用c#實現這一功能的代碼。
1 /// <summary> 2 3 /// 管理工作管理器的方法 4 /// </summary> 5 /// <param name="arg">0:啟用工作管理員 1:禁用工作管理員</param> 6 private void ManageTaskManager(int arg) 7 { 8 RegistryKey currentUser = Registry.CurrentUser; 9 RegistryKey system = currentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies\System",true );10 //如果system項不存在就建立這個項11 if (system == null)12 {13 system = currentUser.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies\System");14 }15 system.SetValue("DisableTaskmgr", arg, RegistryValueKind.DWord);16 currentUser.Close();17 }
View Code
通過使用這個方法就可以在程式中禁用工作管理員。 還的記住要加上以下的引用才行:
Microsoft.Win32;