C# 使用win32 API函数而不是windows注册表启用/禁用任务管理器

C# 使用win32 API函数而不是windows注册表启用/禁用任务管理器,c#,.net,windows,visual-c++,taskmanager,C#,.net,Windows,Visual C++,Taskmanager,目前在C#中开发的windows应用程序中,我正在通过设置以下注册表的值禁用任务管理器和用户切换选项: 禁用任务管理器: HKEY\u CURRENT\u USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\DisableTaskMgrvalue1 禁用(隐藏)用户切换: HKEY\U LOCAL\U MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\

目前在C#中开发的windows应用程序中,我正在通过设置以下注册表的值禁用
任务管理器
用户切换选项

禁用任务管理器:

HKEY\u CURRENT\u USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\DisableTaskMgr
value
1

禁用(隐藏)用户切换:

HKEY\U LOCAL\U MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policys\\System\\HideFastUserSwitching
值1

但是,在windows 7计算机上测试此windows应用程序时,如果登录用户未登录到管理员组,则会遇到访问权限问题,以下是异常文本:

2015年12月16日12:11:24下午:访问注册表项 “HKEY\U当前用户\软件\ Microsoft\Windows\CurrentVersion\Policys\System” 被拒绝Win32错误(0,0)

后来我通过
regedit
检查了手动添加子项
DisableTaskMgr
,我得到了相同的消息
访问被拒绝

在应用程序清单文件中,我通过设置:
启用了
requestedExecutionLevel
。我还尝试以管理员身份运行应用程序exe

如果我将该用户添加到
Administrators
组中,则不会遇到任何问题

那么,是否可以使用
user32.dll
中的win32 API函数来启用/禁用任务管理器和隐藏用户切换? 还是通过
vc++
的任何解决方案

业务要求:


嗯,这是一个考试软件的应用程序,我们希望限制考生使用任何其他应用程序(web浏览器、文件浏览器等),以及在进行考试时禁用该应用程序。因此,我们已经从“开始”菜单选项以及ctrl+alt+del菜单(屏幕)中阻止了任务管理器,我们还希望从ctrl+alt+del菜单中删除
switch user
选项

尝试使用此应用程序禁用taskmgr


我希望没有t@codroipo:(…甚至在vc++中都没有解决方案?我有一个非常粗俗和丑陋的想法,就是禁用键盘上的一些键,或者在TaskManager启动时自动关闭。但是我对这个想法和这个建议不太满意:/问你自己一个有用的问题:“如何防止病毒做同样的事情?”-顺便说一句,你总是需要管理员权限才能做你想做的事情,因为“Windows决定让用户控制自己的程序和数据”(同一来源).在XP和更高版本中有很多方法可以使用Koisk应用程序。你只需要去做一些实际的研究。谢谢!但我不能使用第三方应用程序。