【问题标题】:Delphi: Disable TaskManager in Windows 7Delphi:在 Windows 7 中禁用任务管理器
【发布时间】:2011-02-21 14:12:07
【问题描述】:

我发现this code 用于在 Windows XP 中禁用任务管理器。它有效:)

但它也适用于 Windows 7 吗?注册表路径是一样的,我已经检查过了。但也许有一些限制!?

提前致谢!

【问题讨论】:

  • 对于不太记得 XP 的我们:您能描述一下代码以什么方式“禁用”“任务管理器”吗?我刚刚尝试了 W7 Home Premium 上的代码,但我看不到代码所做的任何更改。而且,真的,如果单个应用程序可以做到这一点,那将是愚蠢的,即使它以提升的权限运行。
  • 该代码设置了一个注册表项,它会禁用安全对话框屏幕上的按钮和任务栏上下文菜单上的菜单命令。如果您直接运行 taskmgr.exe,它会显示一个对话框,告诉您管理员已禁用它。您可以在 KHCU 或 HKLM 中设置它。您不需要特殊权限即可在 HKCU 中禁用它,这也意味着您无需特殊权限即可重新启用它,因此这并不是一个非常了不起的设置。
  • 是的,这正是它的作用。如果按Ctrl+Alt+Del调用任务管理器,也会出现“被管理员禁用”对话框。
  • @Andreas Rejbrand:所以代码不能在 Windows 7 上运行?没有这个对话框吗?
  • @marco92w:在 Windows 7 家庭高级版中,按 Ctrl+Alt+Del 会将您带到欢迎屏幕,但不是用户帐户图标,而是锁定工作站、更改用户、注销按钮、更改密码和任务管理器。最后一个启动任务管理器,就好像你按下了 Ctrl+Shift+Esc。

标签: delphi windows-7 taskmanager


【解决方案1】:

默认情况下,自 Windows 2000 起,以下键对标准用户具有“只读”访问权限(请参阅 here)。

  • HKLM\软件\策略
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Policies
  • HKCU\软件\政策
  • HKCU\Software\Microsoft\Windows\CurrentVersion\Policies

因此,您的应用程序需要具有管理权限才能写入这些密钥。

【讨论】:

  • 谢谢。我的问题是它是否也适用于 Windows 7。那么是否也可以在具有管理权限的 Windows 7 中更改这些密钥?还是他们在 Windows 7 中阻止了对这些键的访问?
  • @marco92w:如果密钥存在,我认为可以使用管理员权限对其进行更改。今晚晚些时候我会试试这个。
  • @marco92w - 是的,我在 W7 上使用“DisableTaskMgr”的快速应用程序进行了测试,如果“以管理员身份运行”,TRegistry 成功写入密钥并且值和任务管理器被有效禁用。
  • 但是在 Windows 7 上,程序似乎首先以没有管理权限的普通用户身份执行,对吧?这与 Windows XP 不同——这正是我想知道的。 :)
  • 是的,如果启用 UAC(这是默认状态),即使管理员登录,应用程序也会在标准用户的上下文中运行,除非选择“以管理员身份运行” ,或者应用程序需要管理权限,例如通过清单。无论哪种情况,在应用程序运行之前都会显示一个对话框,要求确认。
【解决方案2】:

是的,它也适用于 Windows 7。我以提升的权限运行程序(Windows 7 Home Premium),之后任务管理器不再可用。

但是,作为旁注,我不得不说代码

case YesNo of
  False:
    begin
      WriteInteger('DisableTaskMgr',1) ;
    end;
  True:
    begin
      WriteInteger('DisableTaskMgr',0) ;
    end;
end;

相当可怕。首先,根本不需要beginend 部分,因为命令WriteInteger... 是“单行”。其次,为什么不直接写not YesNo的值呢?

真的应该把代码写成这样

WriteInteger('DisableTaskMgr', byte(not YesNo));

这不是更具可读性和简洁性吗?

【讨论】:

  • 非常感谢您,安德烈亚斯!多么棒的优化!一个 10 行代码块,由一个简单的 1-liner ...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-09
  • 2010-11-13
相关资源
最近更新 更多