c# - 使用 win32 API 函数启用/禁用任务管理器,而不是通过 Windows 注册表

标签 c# .net windows visual-c++ taskmanager

目前在用 C# 开发的 Windows 应用程序中,我正在禁用 Task manageruser switching option通过设置以下注册表的值:

禁用任务管理器:

HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\DisableTaskMgr1

禁用(隐藏)用户切换:

HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\HideFastUserSwitching值 1

但是在 Windows 7 机器上测试此 Windows 应用程序时,登录用户不在 Administrators 中组面临访问权限问题,这里是异常文本:

12/16/2015 12:11:24 PM: Access to the registry key 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System' is denied. :Win32Error(0,0)

后来我检查手动添加子键DisableTaskMgr通过regedit , 我收到相同的消息 Access is Denied .

在应用程序 list 文件中,我启用了 requestedExecutionLevel通过设置:<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> .我还尝试通过 Run as Administrator 运行应用程序 exe .

如果我在 Administrators 中添加该用户组则没有问题。

因此,是否有任何替代方法来启用/禁用任务管理器和隐藏用户切换可能是通过使用来自 user32.dll 的 win32 API 函数? 或通过 vc++ 的任何解决方案?

业务需求:

好吧,这是一个考试软件应用程序,我们希望限制考生使用任何其他应用程序(网络浏览器、文件浏览器等),并在考试时关闭该应用程序。所以我们从开始菜单选项以及 ctrl+alt+del 菜单(屏幕)中阻止了任务管理器,我们还想删除 switch user ctrl+alt+del 菜单中的选项。

最佳答案

尝试使用这个应用程序来禁用 taskmgr

Ultimate Windows Tweaker v2.2 for Windows 7

关于c# - 使用 win32 API 函数启用/禁用任务管理器,而不是通过 Windows 注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34356615/

相关文章:

windows - 如何找到 Windows 可执行文件在运行时打开或访问的所有文件?

c# - 如何在 Windows 中获取和设置系统音量

c# - 我如何知道文件是否已在 .NET C# 中更改?

windows - 连接(): WSAECONNREFUSED on connect

c# - 生成的(由 T4)文件 Build Action 被重置为 Build

c# - 将日期时间转换为日期格式 dd/mm/yyyy

windows - 将 x32 lib 与 x64 进程集成的最佳方法是什么(无需将 lib 转换为 x64)?

c# - 为什么部分封闭的泛型在函数中运行时有效,但在直接调用 ServiceCollection 时却无效?

c# - C#清除下拉列表

c# - ASP.NET 标识角色