【问题标题】:Can I hook return value of "Ctrl+Alt+Del"?我可以挂钩“Ctrl+Alt+Del”的返回值吗?
【发布时间】:2011-05-31 12:27:36
【问题描述】:

windows上按ctrl+alt+del

会出现windows安全画面(包括注销、关机、taskmgr等) kbd>.

但是当我们点击 ctrl+alt+del 时,我想显示我的应用程序(MFC)。

所以我需要ctrl+alt+del的返回值。

如何从ctrl+alt+del获取返回值,或者返回值是什么?

【问题讨论】:

  • 返回值为 42。你可以从函数 deep_thought() 中得到它。
  • “返回值”是什么意思?您似乎想在按下这些键时显示您的应用程序,但这与“返回值”不同。您是否试图确定用户在按下 Ctrl+Alt+Del 后执行了哪些操作(例如,锁定工作站)?
  • @Cody:我认为他的意思是键码。就像在 BASIC 中一样,Esc 键返回的键码是 27,空格键码是 32,“输入/返回”键是 13。还有一些键码是同时按下的......这是丹尼想知道的。

标签: c++ c mfc


【解决方案1】:

您能否详细说明您想要实现的目标?您可能不会(当然也不应该)能够重新挂钩安全注意序列以执行特定于应用程序的操作。但是,您可以做的是自定义或替换负责处理 SAS 的登录组件 (GINA)——这可能很有用,例如,在您希望限制用户退出的信息亭系统中。

MSDN 杂志不久前有一篇关于此的文章,您可能会觉得很有趣:http://msdn.microsoft.com/en-us/magazine/cc163803.aspx

【讨论】:

  • 我认为 GINA 已被最近版本的 Windows 中的凭据提供程序或类似的东西所取代。
  • @David 啊,不好意思。一直很喜欢这个缩写。是的,GINA 自从 Vista 之后就消失了。 ://
  • +1 用于阅读提问者的想法并提供替代解决方案。
【解决方案2】:

在 Windows 上 Ctrl + Alt + Del 组合由Winlogon 进程处理。出于安全原因,您不能对其进行干预。

【讨论】:

    【解决方案3】:

    你应该写你自己的msgina.dll;这不是一件容易的事,但这样做你将能够控制的不仅仅是 Ctrl+Alt+Del。 p>

    【讨论】:

      【解决方案4】:

      Ctrl+Alt+Del是Windows早期版本(即2000/ XP 前 SP1)。您不能覆盖注册或挂钩 WM_HOTKEY 消息(至少不是以安全的方式)。可以理解,操作系统更喜欢操作系统(特别是 Winlogon 进程)而不是第三方程序来获取用户的密码,但希望灵活,以防用户通过指纹、智能卡等进行身份验证read more here

      在 Windows 2000/XP 上,自定义登录体验的官方方法是编写自己的 Gina(在 ig2r 回复中链接的文章中有详细说明)但 Gina 可能会相互冲突(例如指纹登录的 Think Pad 笔记本电脑有问题与 McAfee Safeboot、pcAnywhere 等)。 Gina 在 Vista 中消失了。

      在 Windows Vista 或更高版本上,您可以自定义登录体验的方式是 credential provider。它的可扩展性是有限的,但是您仍然可以通过 ICredentialProviderCredentialEvents::OnCreatingWindow 获得 HWND,以防您想要显示一个对话框以响应凭据提供程序事件。使用 HWND 作为对话框所有者的记录方法(win32 或 MFC 或其他)。

      当然,只要您了解每个 Windows 版本的驱动程序开发和用户模式-内核模式通信,总会有 keyboard driver filter approach,You can even block the whole keyboard if you want.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-12
        • 1970-01-01
        • 2013-02-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多