MFC禁用任务管理器
禁用任务管理器主要是对注册表进行操作,在注册表 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System 位置下有一个名为 DisableTaskMgr 的键值(也有可能没有,没有的话就新建一个或程序生成一个),该键值的类型为 REG_DWORD 。当该键值位1时,任务管理器会被禁用,当该值为 0 时会解除。
void HideProcess()
{
//打开注册表
HKEY key;
char szModule[MAX_PATH] = { 1 };
do
{
//long lRet;
LPCTSTR data = L"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System";
long reg = RegOpenKeyEx(HKEY_CURRENT_USER, data, 0, KEY_ALL_ACCESS, &key);
int i = GetLastError();
if (reg != ERROR_SUCCESS)
{
break;
}
//判断是否存在
/*lRet = RegQueryValueEx(key, L"DisableTaskMgr", NULL, NULL, (LPBYTE)tchData, &dwSize);
if (lRet != ERROR_SUCCESS)
{
break;
}*/
int value = 1;
RegSetValueEx(key, L"DisableTaskMgr", 0, REG_DWORD, (BYTE*)szModule, strlen(szModule));
//RegSetValueEx(key, L"DisableTaskMgr", 0, REG_DWORD, (LPBYTE)&value, sizeof(DWORD));
} while (FALSE);
RegCloseKey(key);
}
备注:注释掉的 RegSetValueEx 函数会在注册表里显示 不正确的DWORD(32位)值 导致值不可以直接被修改(但可以删除),即使这样屏蔽功能也会正常实现(win10不行)。
备注:win10在重启可能会重置这个键值。