Windows功能管控

c++

Posted by YiMiTuMi on November 26, 2019

Windows功能管控

禁用任务管理器

禁用任务管理器主要是对注册表进行操作,在注册表 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在重启可能会重置这个键值。

禁用注册表

禁用注册表同样在注册表 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System 位置下有一个名为 DisableRegistryTools 的键值类型和任务管理器的一样,为 1 时禁止修改注册表。

备注:虽然禁止修改注册表了,只是运行打开的注册表不能手动修改,但是用程序遍历去修改还是可以的(不用怕改了改不回来)。

禁用组策略

禁用组策略同样在注册表 HKEY_CURRENT_USER\Software\Policies\Microsoft\MMC\{8FC0B734-A0E1-11D1-A7D3-0000F87571E3} 位置下有一个名为 Restrict_Run 的键值类型和任务管理器的一样,为 1 时禁止打开组策略。

备注:win + r 运行 gpedit.msc 可以打开组策略

禁用控制面板

禁用控制面板同样在注册表 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer 位置下有一个名为 NoControlPanel 的键值类型和任务管理器的一样,为 1 时禁止打开控制面板。

备注:因为设备管理器也属于控制面板当这样禁用时,会把控制面板一同禁用。

禁用计算机管理

每次打开计算机管理实际上是运行 C:\Windows\System32\compmgmt.mscC:\Windows\SysWOW64\CompMgmtLauncher.exe 中的一个根据打开方式不同调用的也不同,这是32位的在64位的文件夹中也会有的 *C:\Windows\SysWOW64*

禁用计算机管理可以把这几个打开他的文件重命名一下就可以防止用户打开,要用时再改回去就可以了。在写命令行时会出现重定向问题,可以重定向暂时关掉就好。windows注册表重定向问题

最关键的问题是:当我们去修改文件名时发现我们并没有修改的权限,需要一个 TrustedInstaller 权限。

禁止设备管理器

我们也可以单独禁用设备管理器,和禁用计算机管理一样我们只需要找到他的启动文件的位置重命名一下就可以了,经测试 C:\Windows\System32\devmgmt.msc (64位同样也有一个)改掉这个就好。

禁止MSConfig

和禁用计算机管理一样我们只需要找到他的启动文件的位置重命名一下就可以了,经测试 C:\Windows\System32\msconfig.exe (64位同样也有一个)改掉这个就好。

禁止进入安全模式(差点被逼疯)

不要相信网上的啥修改注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot 下的 MinimalNetwork 文件,这两个文件删掉或者重命名确实可以禁用成功,但是实现起来及其麻烦,我最后是卡在权限这一步了,而且我的win10系统删除就会蓝屏(很奇怪)。

方法:

禁用F8菜单:bcdedit /set {bootmgr} displaybootmenu no

启用F8菜单:bcdedit /set {bootmgr} displaybootmenu yes

命令行禁用开机时的F8就好,是不是很简单。(笑脸)

禁止修改IP地址

C:\Windows\System32 中有三个和网络相关的DLL,将他们修改一下名字就可以了。

Netcfgx.dll

Netshell.dll

Netman.dll

SetNetworkLocation.dll 网络公用专用设置 (主要针对windows10设置里的网络设置)

NetworkMobileSettings.dll 管控整个网络设置 (主要针对windows10设置里的网络设置)

禁止修改时间

C:\Windows\System32 中将 timedate.cplSystemSettingsAdminFlows.exe 改下名就好这样就打不开了。

timedate.cpl 是控制面板的。 SystemSettingsAdminFlows.exe win10设置中的修改时间。

备注

理论上后面这种改名字的方法,只要找的到启动文件适用与大部分地方,当然要解决 TrustedInstaller 权限问题,我已经给出方法了(在最后)。在改名时会发现在文件夹中还有他们的中文、英文模式也是可以打开的(具体啥时候能用到我没测试过),要是不放心也可以把这也改了。

获取TrustedInstaller权限

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