我如何拦截所有关键事件,包括Ctrl + Alt + Del和Ctrl + Tab?

我正在编写一个屏幕保护程序types的应用程序,需要停止用户访问系统而不input密码。 我想抓住/抑制用户可能尝试退出应用程序的各种方法,但我所做的所有研究似乎都指向“不能”。

在C#或C ++中的任何东西都会很棒。 我想过禁用键盘,但我会有其他问题。

要添加Shog9所说的话,如果你的应用程序可以拦截ctrl + alt + del,那么你的应用程序就可以伪装成Windowslogin对话框,这样就可以欺骗最终用户将他们的凭证input到应用程序中。

如果你想要replaceWindowslogin对话框,请参阅Winlogon和GINA (但是这说“GINA DLL在Windows Vista中被忽略”,而且我还没有听说Vista是什么)。

如果有人问我不会告诉他们,他们不能。

更具体地说,你的“应用软件”不能:相反,通过devise,只有“系统软件”才能做到这一点; 并不是说你没有被允许或者不能写系统软件,但是你的OP似乎很清楚地询问如何在不写系统软件的情况下做到这一点……答案就是你可以“ t:因为系统被devise为阻止应用程序挂钩这些键组合。

你可以给我指导写系统的东西..我其实认为这将是更好的,如果它是系统级别..这是一个OEM如此类的点真的。 另外,如果我写了它的系统级别,我可以写一个应用程序来控制它。

键盘filter设备驱动程序或GINA DLL将被视为系统软件:由pipe理员(或OEM)安装并作为O / S的一部分运行。

我不知道GINA的名字, 我已经(上面)在MSDN中给出了一个链接。 我期望它是Win32用户模式代码。

设备驱动程序是一个不同的主题:例如驱动程序开发入门 。

有没有办法重新映射键盘,以便删除不是在哪里?

我仍然不确定你和/或你的老板是否有正确的想法。 恕我直言,你不应该是一个应用程序,防止用户按下Ctrl-Alt-Del。 如果你想停止用户访问系统而不input密码,那么你应该locking(密码保护)系统,就好像用户已经按下了Ctrl Alt Del,然后select“locking这台计算机”。 要解锁电脑,他们需要按下Ctrl Alt Del并将其凭据input到WinLogon中。

但是,忽略你应该做的,把注意力集中在你有能力做的事情上,如果你想拦截键盘,那显然是可以做到的。 我没有自己研究键盘,但是这篇文章和这篇文章声称通过编写“键盘filter驱动程序”(这是一种内核模式,而不是Win32,设备驱动程序)来获得成功。 如果你写了其中一个,虽然你可能会得到一些推迟,例如像DDK MVP的 这个反应 ,或者这个反嗅探产品的反应 。

你不能。 Ctrl + Alt + Del的要点是只有系统才能处理它,因此系统总是可以处理它。

幸运的是,Windows内置了对受密码保护的屏幕保护程序的支持(可通过“显示属性”中的“恢复,密码保护”选项或通过组策略)。 就用那个吧

我没有testing过,但使用SetWindowsHookEx()

从MSDN文档:WH_KEYBOARD_LL

Windows NT / 2000 / XP:安装监视低级键盘input事件的钩子程序。 有关更多信息,请参阅LowLevelKeyboardProc挂钩过程。

可以拦截crtl + alt + del,但显然微软很难做到这一点,因为这样你可以popup一个假锁对话框,并logging人的密码。

答案是写一个设备驱动程序。 我不记得是否可以使用普通的旧键盘filter,或者如果你必须写一个键盘ISR。 无论哪种方式,这当然是可能的,但如果你没有驾驶经验,那将会非常痛苦。

因为这似乎是一个很好的收集点,用来“截取”三个关键控制点删除的各种手段,这里是我昨天遇到的可能有用的东西。

http://cuinl.tripod.com/Tips/enablectrldel.htm

在我看来 ,当唯一切实可行的办法是切断电源(例如机械卸载一台超载的类似Android的手持电脑的电池),以阻止任何进程或故障结果,忍受)无反应 – 看来,一个危险的和令人沮丧的血统继续—并继续恶化。

特别是除去机械扬声器音量控制等明智而直接的事情。 (当然,体积庞大,材料更多,当然这只是一件事情,对个人来说有什么好处或者是没有把握或者经验的无限和完美的意识?)

这是一个系列的方法来devise的环境,负责对用户的一个关键和真正有意义的技术接口的一部分。 ( 唯一的?)

我说把一些button – 直接 – 硬件控制 – 放回到这些东西 – 至less在这些技术的软件方面完全适应人造软接口的情况下,我将所有的启发式provisionings。

即使在宇宙的力学中,我敢打赌,有一个方便的重置,恢复,暂停,停止types的function(s)的安全和根本的生存能力的存在将构成所有的devise师之后的始作俑者存在:智慧的意识和意志。

你可以在XP和之前,但与Vista不再了。

尝试调查是否可以编写一个自己启动为受密码保护的屏幕保护程序的应用程序。

屏幕保护程序可以做的不仅仅是显示漂亮的图片 – 我曾经见过使用鼠标和键盘提供简单游戏的交互式屏幕保护程序,但是我不记得我看到的是哪个版本的窗口。已经是Windows 95.(在这种情况下所有的赌注都closures)。

在程序运行时拦截ctrl和alt按键以及取消这些按键是什么?

我不知道这会如何,如果在Vista中,但是值得一试。

我记得在2001年左右做了这样的事情,所以它可能在98上运行。过了很长时间,因为我甚至试图搞乱lockingctrl-alt-del的东西。

好的,我不打算在这里发布代码但是,这是一个回旋

创build一个键盘钩子。 当用户按下ctrl || alt || 删除设置bools为true ..如果他们按任何其他设置它们全部为false。

switch (p_key) { default: Clear(); break; case Keys.LMenu: altHit = true; break; case Keys.RMenu: altHit = true; break; case Keys.LControlKey: ctrlHit = true; break; case Keys.RControlKey: ctrlHit = true; break; case Keys.Delete: delHit = true; break; 

当屏幕有焦点时,把它丢给任务pipe理器,closures这个血腥的事情。 屏幕闪烁如此之快,用户从来不会注意到它。 我可以做任何我想做的事情。

我承认这是一个混乱,但它确实导致了预期的效果。 (哦,我希望我不必这样做)

您仍然可以在Windows 7中拦截Ctrl + Alt + Del

这是Process Explorer的方式:

http://mygreenpaste.blogspot.com/2005/07/image-file-execution-options-good-evil.html