2013-08-03 19 views
-1

我正在用C++开发一个应用程序,用户可以从应用程序中禁用任务管理器(以及更多的功能)。 以下是我做到了在Visual C++:从有限/来宾帐户禁用任务管理器

HKEY regHandle; 

DWORD dwValue = 1; 
BYTE* data = (BYTE*)&dwValue; 

RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", 0, NULL, NULL, KEY_WRITE | KEY_WOW64_32KEY,NULL , &regHandle ,NULL); 
RegSetValueEx(regHandle,"DisableTaskmgr",0, REG_DWORD,data ,sizeof(DWORD)); 

它在管理员帐户运作良好。但是在有限的用户帐户和来宾帐户中,它不起作用。它试图将UAC级别更改为管理权限/最高可用级别。两者都不起作用。我也检查了我是否可以通过将REG值写入HKEY_LOCAL_MACHINE来完成。可悲的是,这也失败了。

我已经使用Google搜索并搜索了stackoverflow,但没有找到解决方案。手动编辑组策略/注册表完全不是解决方案,我必须在需要时从应用程序内部执行。在此先感谢您的帮助。

+0

如果你没有权利这么做,那么编辑注册表会是一个相当严重的安全漏洞,你不觉得吗?换句话说,您在问“如何绕过Windows中的安全性”,并希望人们告诉您(以防有人知道......)。 –

+0

我想为TaskMan可执行文件的DACL添加一个“拒绝执行”(或“拒绝全部”)记录。 –

+0

@MatsPetersson,我不认为这是一个安全漏洞。很少有应用程序需要禁用taskmanager。如果应用程序使用有限帐户的管理员权限运行,为什么不这样做?那是为什么windows有UAC? – Jasir

回答

2

我想这是因为你通过注册表修改组策略选项:

enter image description here

但组策略并未生效。 Microsoft says you have to reboot.

也许迫使组策略更新

运行gpupdate/force

会使其生效。

这是安装程序会执行的一种操作,然后提醒用户必须在安装完成之前重新启动计算机。或者,也许,因为它只是HKCurrentUser,注销和登录将起作用。