【问题标题】:Disable Ctrl+Alt+Del Combination on windows7在 Windows 7 上禁用 Ctrl+Alt+Del 组合
【发布时间】:2012-04-02 20:11:01
【问题描述】:

我正在开发一个应用程序(用 C# 编写),该应用程序具有在 KIOSK 模式下运行的设置。我在这里遇到的挑战是禁用 Ctrl+Alt+Del 组合事件。

过去的类似帖子中没有正确答案。请让我知道正确的行动。 考虑到,我的代码正在使用注册表项来禁用/启用选项,如果您知道任何注册表项,它将更有帮助。

【问题讨论】:

  • 如果它处于 Kiosk 模式,您不能确保提供的硬件缺少一个或所有 Ctrl、Alt 或 Del 键(假设有键盘)
  • @RichardEv ,亲爱的理查德,我没有完全明白,但如果您的目标是禁用硬件或类似的东西,这是不可能的。如果您的目标是不使用键盘,那也是不可能的。
  • @Jason Evans,Q#4234242 的链接可以工作,因为它涉及重新映射密钥,然后操作系统获得更改以对它们进行语义处理。涉及全局挂钩的另一个将不起作用。

标签: c# windows-7


【解决方案1】:

CTRL+ALT+DEL 是 Windows NT(及其衍生产品如 Win7)的secure attention sequence。它是保证引起操作系统注意的一个组合键。 SAS 的全部意义在于它不能被用户程序拦截或停止。

它解决的一个安全问题是虚假登录屏幕:考虑一个看起来与正常 Windows 登录屏幕完全一样的屏幕。光是看就无法判断它是假的。但是,如果您习惯在登录前总是按 CTRL+ALT+DEL (有一个选项总是需要它对于合法屏幕),在虚假登录屏幕上按 SAS 将调出任务管理器或安全注意屏幕(带有注销、更改密码等选项)。真正的登录屏幕不会那样做;它只是停留在屏幕上。只要操作系统本身没有被替换或损坏,CTRL+ALT+DEL 将保护您免受虚假登录屏幕的影响。如果用户程序可以拦截 SAS,那它就没有任何价值了。

SAS 从一开始就融入了 Windows NT 设计(它是在 1993 年的第一个版本中),所以要绕过它并不容易。我确信有键盘过滤器驱动程序 - 或拦截该序列的东西 - 专为信息亭使用而设计。

【讨论】:

  • 死史密斯,我的意思不是登录屏幕。在 windows7 运行时,如果您按 Ctrl+Alt+Del,您将看到一个屏幕,允许您登录、锁定计算机、更改密码等......我想禁用此选项
  • 如果有人在播种错误的登录屏幕并且您按 CTRL+ALT+DEL 它将显示注销、锁定等屏幕,而不是停留在那里。这样你就会知道假屏幕是假的。如果一个程序可以阻止这种情况的发生,那么您将无法区分虚假登录屏幕和真实登录屏幕。
【解决方案2】:

不可能捕获 CTRL+ALT+DEL,在所有 Windows 系统中都是这样设计的。这是一个安全问题,如果用户点击 CTRL+ALT+DEL,他或她应该确定它是操作系统并且不是响应它的应用程序(可能是捕获密码的木马)。

我猜想捕获 CTRL+ALT+DEL 你需要编写某种设备驱动程序。

编辑:另见This answer。我没试过,但问题很相似。

【讨论】:

    【解决方案3】:

    可以选择 CTRL+ALT+DEL 组合,但不能禁用它。
    我尝试使用 SetWindowsHookExWH_KEYBOARD_LL 禁用它,当 CTRL+ALT+DEL 时,您可以成功收到通知按下,但你无能为力。

    【讨论】:

      【解决方案4】:

      您需要做一些 P/Invoke,在 user32.dll 中,有一个名为 SystemParametersInfo 的方法,查看这些资源了解更多信息

      http://pinvoke.net/search.aspx?search=SystemParametersInfo&namespace=[全部]

      http://msdn.microsoft.com/en-us/library/windows/desktop/ms724947%28v=vs.85%29.aspx

      很久以前我做过类似的事情,但不再有代码,虽然我确实找到了这个(它在 vb6 中),但理解这个想法并翻译成 .NET 应该不会太难

      http://www.developerfusion.com/code/1021/how-to-disable-ctrlaltdel/

      【讨论】:

        【解决方案5】:

        虽然有点可能,但这并不是一件容易的事,也不是 C# 可以完成的事情。 This Article 将向您展示如何使用组策略编辑器禁用 CTRL+ALT+DEL。但是,要永久禁用该组合,您将需要编写自己的键盘驱动程序或编写自己的 GINA 存根(图形识别和身份验证)。

        【讨论】:

        • 组策略将更改注册表项,我确信这一点。但我找不到合适的钥匙来处理。
        • HKCU\ Software\ Microsoft\ Windows\ CurrentVersion\ Policies\ System\DisableTaskMgr = dword:1
        【解决方案6】:

        可以阻止CTRL+ALT+DEL组合。但是,您不能真正禁用它。据我所知,有两种可能的方法。

        1. 重新映射键盘布局。有一个注册表二进制键可让您重新映射键盘布局:
        HKLM\System\CurrentControlSet\Control\Keyboard Layout\Scancode Map
        

        请查看:Disabling Windows Hot Keys

        1. 这种方法可能很危险,但我没有注意到这种方法可能导致的任何副作用。 CTRL+ALT+DEL 组合由 winlogon.exe 处理。如果您的进程具有管理权限,您可以挂起 winlogon.exe。因此,它无法处理热键,如果用户按下 CTRL+ALT+DEL,则不会发生任何事情。

        请查看:C++ code to disable CTRL+ALT+DEL

        【讨论】:

          猜你喜欢
          • 2012-07-11
          • 1970-01-01
          • 1970-01-01
          • 2022-06-16
          • 1970-01-01
          • 1970-01-01
          • 2011-05-13
          • 1970-01-01
          • 2011-05-05
          相关资源
          最近更新 更多