以前制作的桌面鎖屏軟件雖然也禁用過任務管理器,但是采取的是比較笨的方法,而且對操作系統還有一定的危害。因為任務管理也是一個窗體也就是說它中也是一個獨立進程,所以只需要強制性關閉這個進程即可以關閉任務管理器了,任務管理的進程名稱為“taskmgr”,在程序用一個單獨的計時器,每100毫秒遍歷一次系統開啟的所有的進程,但凡出現進程的名稱與任務管理器名稱相同直接關閉。這樣就可以間接的達到禁用任務管理的作用,然而這種方法不能夠常用,如果經常強制性的關閉任務管理的進程會錯亂操作系統的消息處理。所以當時寫的桌面管理軟件就沒有真正的被實用起來。
本次實現禁用任務管理的原理是直接修改系統的注冊表,以達到讓任務管理器禁用的目的,修改任務管理器的注冊表項為:
在這個項中添加一個鍵:DisableTaskmgr ,當值為1的則是禁用任務管理器,當值為0的時候則是啟用任務管理器,我的電腦默認是沒有system這個項的。
上面將原理已經介紹了,下面將列出如何用c#實現這一功能的代碼。
/// 管理任務管理器的方法
/// </summary>
/// <param name="arg">0:啟用任務管理器 1:禁用任務管理器</param>
private void ManageTaskManager(int arg)
{
RegistryKey currentUser = Registry.CurrentUser;
RegistryKey system = currentUser.OpenSubKey(@"Software/Microsoft/Windows/CurrentVersion/Policies/System",true );
//如果system項不存在就創建這個項
if (system == null)
{
system = currentUser.CreateSubKey(@"Software/Microsoft/Windows/CurrentVersion/Policies/System");
}
system.SetValue("DisableTaskmgr", arg, RegistryValueKind.DWord);
currentUser.Close();
}
通過使用這個方法就可以在程序中禁用任務管理器。
還的記住要加上以下的引用才行:
Microsoft.Win32;
新聞熱點
疑難解答