禁用任务管理器的Win32 API是什么?

5
也就是说,即使你按下Ctrl+Alt+Del,任务管理器也不应该弹出。

7
JK: del \Windows\System32\taskmgr.exe JK:删除 \Windows\System32\taskmgr.exe - pmg
@pmg,哈哈:) 但是说真的,有没有办法做到这一点? - DriverBoy
这是一个系统策略问题,不是编程问题。正在重定向到Serverfault。 - Raymond Chen
3个回答

8
您可以使用组策略编辑器组策略API禁用任务管理器。
要使用编辑器,请运行gpedit.msc,然后导航到“用户配置”-> “管理模板”-> “系统”-> “Ctrl + Alt + Del选项”。双击“删除任务管理器”设置,并将其设置为“已启用”。
关闭策略编辑器,然后运行命令gpupdate /force以应用更改。
完成后,如果用户尝试访问任务管理器,则会收到一个消息,说明访问被禁用。 编辑 如果用户是管理员,则可以(如果他们知道如何)进入gpedit并重新启用任务管理器。为了避免这种情况,请将他们设为用户或访客组的成员:然后他们将无法更改任何策略设置。

1
我认为WMI应该提供一种从代码中实现这个的方法。 - Agnel Kurian
1
@Agnel Kurian - 添加了一个到API文档的链接。 - Andy Johnson

4

虽然用户可以重新打开它,但您可以将此注册表键设置为1。

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

(\System\和DisableTaskmgr可能不存在,因此需要创建它们,DisableTaskmgr应该是一个DWORD32键)


2
在Windows 7上,如果没有管理员权限,这个功能无法正常工作。 - quantum

1

通常情况下,您不需要这样做,而且即使您认为需要,也不应该这样做。用户被允许执行诸如切换窗口或使用任务管理器终止进程等操作是有充分理由的。以这种根本性的方式干扰系统通常会受到谴责,原因很好理解。更何况,在正常情况下,您真的没有任何有效的理由需要这样做。

无论如何,没有直接禁用启动任务管理器的方法,但至少有三种间接方法可以实现:

  1. 安装全局低级键盘钩子并丢弃Ctrl-Alt-Del按键(这在某些Windows版本上可能无效,并且如果用户运行杀毒软件,则会触发警报)
  2. 安装自己的无操作任务管理器(ProcessExplorer就是这样做的,所以它应该能够工作)
  3. 从任务管理器可执行文件中删除“读取-执行”权限(这是有效的,我曾经无意中这样做过)

显然,所有三个“解决方案”都非常具有侵入性和恶意性质,因此在执行任何此类操作之前,请认真考虑10次。如果您这样做了,请不要抱怨您破坏了系统。


肯定有更好的解决方案,我以前见过这种软件。 - DriverBoy
1
“更好”这个词有点争议。就像我说的,通常你根本没有必要这样做。但是我可以向您保证,如果您按下Ctrl-Alt-Del却什么都没发生(比如我曾经创建了一个受限用户帐户,意外地无法访问ProcessExplorer的exe文件),那将会非常烦人。如果您故意这样做,您的最终用户会讨厌您。” - Damon
有些情况下可能会有合理的原因,比如在运行信息亭时。或者当您有运行中的软件,不希望用户禁用它时。例如,一款记录上网时间的应用程序在网吧登录后可以启用。 - Agnel Kurian
OP并不是试图禁用Ctrl-Alt-Del,他试图禁用对任务管理器的访问。 - Andy Johnson
@Andy Johnson:抱歉,我的措辞可能有些含糊不清,我会进行编辑。 - Damon
@Damon,cltr+alt+del是系统调用,无法被劫持或阻止。因此,停止任务管理器的唯一方法是从注册表中将其停用。 - Assassin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接