目前在使用C#开发的Windows应用程序中,我通过设置以下注册表的值来禁用Task manager
和user switching option
:
禁用任务管理器:
HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\DisableTaskMgr
值1
禁用(隐藏)用户切换:
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\HideFastUserSwitching
值1
但是在Windows 7计算机上测试此Windows应用程序时,Administrators
组中没有登录用户遇到了访问权限问题,这里是例外文本:
12/16/2015 12:11:24 PM:访问注册表项 'HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \政策\系统' 被拒绝。 :Win32Error(0,0)
稍后我检查了通过DisableTaskMgr
手动添加子密钥regedit
,我收到Access is Denied
的相同消息。
在应用程序清单文件中,我通过设置requestedExecutionLevel
启用了<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
。我还尝试通过Run as Administrator
运行应用程序exe。
如果我在Administrators
群组中添加该用户,则不会遇到任何问题。
那么,是否可以使用user32.dll
中的win32 API函数来启用/禁用任务管理器并隐藏用户切换?
或通过vc++
的任何解决方案?
业务要求:
嗯,这是一个考试软件的应用,我们希望限制考生使用任何其他应用程序(网络浏览器,文件浏览器等)以及在考试时杀死这个应用程序。所以我们从开始菜单选项以及ctrl + alt + del菜单(屏幕)中阻止了任务管理器,我们还想从ctrl + alt + del菜单中删除switch user
选项。