MFC

MFC禁用任务管理器

MFC

Posted by YiMiTuMi on July 26, 2019

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在重启可能会重置这个键值。

雪莲花 – 祈愿愿望达成后的安慰