c#中禁用windows的任務管理器的方法
以前制作的桌面鎖屏軟件雖然也禁用過任務管理器,但是采取的是比較笨的方法,而且對操作系統(tǒng)還有一定的危害。因為任務管理也是一個窗體也就是說它中也是一個獨立進程,所以只需要強制性關閉這個進程即可以關閉任務管理器了,任務管理的進程名稱為“taskmgr”,在程序用一個單獨的計時器,每100毫秒遍歷一次系統(tǒng)開啟的所有的進程,但凡出現進程的名稱與任務管理器名稱相同直接關閉。這樣就可以間接的達到禁用任務管理的作用,然而這種方法不能夠常用,如果經常強制性的關閉任務管理的進程會錯亂操作系統(tǒng)的消息處理。所以當時寫的桌面管理軟件就沒有真正的被實用起來。
本次實現禁用任務管理的原理是直接修改系統(tǒng)的注冊表,以達到讓任務管理器禁用的目的,修改任務管理器的注冊表項為:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System
在這個項中添加一個鍵:DisableTaskmgr ,當值為1的則是禁用任務管理器,當值為0的時候則是啟用任務管理器,我的電腦默認是沒有system這個項的。
上面將原理已經介紹了,下面將列出如何用c#實現這一功能的代碼。
/// <summary>
/// 管理任務管理器的方法
/// </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項不存在就創(chuàng)建這個項
if (system == null)
{
system = currentUser.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies\System");
}
system.SetValue("DisableTaskmgr", arg, RegistryValueKind.DWord);
currentUser.Close();
}
通過使用這個方法就可以在程序中禁用任務管理器。
還的記住要加上以下的引用才行:
Microsoft.Win32;
相關文章
C#中使用DataContractSerializer類實現深拷貝操作示例
這篇文章主要介紹了C#中使用DataContractSerializer類實現深拷貝操作示例,本文給出了實現深拷貝方法、測試深拷貝方法例子、DataContractSerializer類實現深拷貝的原理等內容,需要的朋友可以參考下2015-06-06
DevExpress實現GridControl同步列頭checkbox與列中checkbox狀態(tài)
這篇文章主要介紹了DevExpress實現GridControl同步列頭checkbox與列中checkbox狀態(tài),需要的朋友可以參考下2014-08-08

