Delphi:在Windows 7中禁用TaskManager

Delphi:在Windows 7中禁用TaskManager,delphi,windows-7,taskmanager,Delphi,Windows 7,Taskmanager,我找到了在Windows XP中禁用任务管理器的方法。有效:) 但它在Windows7中也能工作吗?注册表路径是相同的,我已经检查过了。但是可能有一些限制 提前谢谢 默认情况下,自Windows 2000以来,以下键对标准用户具有“只读”访问权限(请参阅) HKLM\软件\政策 HKLM\Software\Microsoft\Windows\CurrentVersion\Policys 香港大学\软件\政策 HKCU\Software\Microsoft\Windows\CurrentVers

我找到了在Windows XP中禁用任务管理器的方法。有效:)

但它在Windows7中也能工作吗?注册表路径是相同的,我已经检查过了。但是可能有一些限制


提前谢谢

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

  • HKLM\软件\政策
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Policys
  • 香港大学\软件\政策
  • HKCU\Software\Microsoft\Windows\CurrentVersion\Policys

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

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

  • HKLM\软件\政策
  • HKLM\Software\Microsoft\Windows\CurrentVersion\Policys
  • 香港大学\软件\政策
  • HKCU\Software\Microsoft\Windows\CurrentVersion\Policys

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

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

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

case YesNo of
  False:
    begin
      WriteInteger('DisableTaskMgr',1) ;
    end;
  True:
    begin
      WriteInteger('DisableTaskMgr',0) ;
    end;
end;
太可怕了。首先,根本不需要
begin
end
部分,因为命令
WriteInteger…
是“一行程序”。其次,为什么不直接写
not YesNo
的值呢

我们真的应该把代码写成

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

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

是的,它在Windows 7中也能工作。我以提升的权限(Windows 7 Home Premium)运行该程序,此后任务管理器不再可用

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

case YesNo of
  False:
    begin
      WriteInteger('DisableTaskMgr',1) ;
    end;
  True:
    begin
      WriteInteger('DisableTaskMgr',0) ;
    end;
end;
太可怕了。首先,根本不需要
begin
end
部分,因为命令
WriteInteger…
是“一行程序”。其次,为什么不直接写
not YesNo
的值呢

我们真的应该把代码写成

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


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

对于我们这些记不太清楚XP的人来说:你能描述一下代码是如何“禁用”任务管理器的吗?我刚刚在W7 Home Premium上尝试了该代码,但我看不到该代码有任何更改。而且,实际上,如果一个应用程序能够做到这一点,即使它是以提升的权限运行的,那将是愚蠢的。代码设置了一个注册表项,这将禁用安全对话框屏幕上的按钮和任务栏上下文菜单上的菜单命令。如果直接运行taskmgr.exe,它将显示一个对话框,告诉您管理员已禁用它。您可以在KHCU或HKLM中进行设置。在HKCU中禁用它不需要特殊权限,这也意味着重新启用它也不需要特殊权限,所以它并不是一个非常出色的设置。是的,这正是它所做的。如果通过Ctrl+Alt+Del调用任务管理器,则还会出现“管理员禁用”对话框。@Andreas Rejbrand:那么该代码在Windows 7上不起作用了?是否有此对话框?@marco92w:在Windows 7 Home Premium中,按Ctrl+Alt+Del可进入欢迎屏幕,但不是用户帐户图标,而是用于锁定工作站、更改用户、注销、更改密码和任务管理器的按钮。最后一个启动任务管理器,就好像你按下了Ctrl+Shift+Esc。对于我们这些记不太清楚XP的人:你能描述一下代码是如何“禁用”任务管理器的吗?我刚刚在W7 Home Premium上尝试了该代码,但我看不到该代码有任何更改。而且,实际上,如果一个应用程序能够做到这一点,即使它是以提升的权限运行的,那将是愚蠢的。代码设置了一个注册表项,这将禁用安全对话框屏幕上的按钮和任务栏上下文菜单上的菜单命令。如果直接运行taskmgr.exe,它将显示一个对话框,告诉您管理员已禁用它。您可以在KHCU或HKLM中进行设置。在HKCU中禁用它不需要特殊权限,这也意味着重新启用它也不需要特殊权限,所以它并不是一个非常出色的设置。是的,这正是它所做的。如果通过Ctrl+Alt+Del调用任务管理器,则还会出现“管理员禁用”对话框。@Andreas Rejbrand:那么该代码在Windows 7上不起作用了?是否有此对话框?@marco92w:在Windows 7 Home Premium中,按Ctrl+Alt+Del可进入欢迎屏幕,但不是用户帐户图标,而是用于锁定工作站、更改用户、注销、更改密码和任务管理器的按钮。最后一个命令启动任务管理器,就像您按了Ctrl+Shift+Esc一样。谢谢。我的问题是它是否也适用于Windows7。那么,在Windows7中也可以使用管理权限更改这些密钥吗?还是他们在Windows7中阻止了对这些密钥的访问?@marco92w:如果这些密钥存在,我认为它们可以通过管理员权限进行更改。今晚晚些时候我会试试。@marco92w-是的,我在W7上用一个快速应用程序测试了“DisableTaskMgr”,如果“以管理员身份运行”,TRegistry成功写入密钥,值和任务管理器被有效地禁用。但是在Windows 7上,程序似乎首先以普通用户身份执行,没有管理权限,对吗?这与Windows XP有所不同,这正是我想知道的是的,如果启用了UAC(这是默认状态),即使管理员登录,应用程序也会在标准用户的上下文中运行,除非选择了“以管理员身份运行”,或者应用程序需要管理权限(例如通过清单)。无论哪种情况,在应用程序运行之前都会显示一个对话框,请求确认。谢谢。我的问题是它是否也适用于Windows7。那么,是否也可以使用管理权限在Windows 7中更改这些密钥