我正在开发一个具有在KIOSK模式下运行的设置的应用程序(用C#编写)。我在这里只是一个挑战,即禁用 Ctrl + Alt + Del 组合事件。
过去类似的帖子中没有正确答案。请让我知道正确的行动。 考虑到,我的代码正在使用注册表项来禁用/启用选项,如果您知道任何注册表项,它将更有帮助。
答案 0 :(得分:10)
CTRL + ALT + DEL 是Windows NT的secure attention sequence(及其衍生产品,如Win7)。它是保证获得操作系统注意力的一个关键组合。 SAS的全部意义在于它不能被用户程序拦截或停止。
它解决的一个安全问题是虚假登录屏幕:考虑一个看起来与普通Windows登录屏幕完全相同的屏幕。只是通过观察就没有办法说它是假的。但是,如果您习惯在登录前始终按 CTRL + ALT + DEL (有一个选项可以始终要求它对于合法屏幕),在虚假登录屏幕上按SAS将显示任务管理器或安全注意屏幕(注销,更改密码等选项)。真正的登录屏幕不会这样做;它只是停留在屏幕上。只要操作系统本身没有被替换或泄露, CTRL + ALT + DEL 将保护您免受虚假登录屏幕的侵害。如果用户程序可以拦截SAS,则不值得。
SAS从一开始就融入了Windows NT设计(它是在1993年的第一个版本中),所以绕过它并不容易。我确信有键盘过滤器驱动程序 - 或者是拦截该序列的东西 - 专为自助服务终端使用而设计。
答案 1 :(得分:2)
无法捕获 CTRL + ALT + DEL ,在所有Windows系统中都是如此。这是一个安全问题,如果用户点击 CTRL + ALT + DEL ,他或她应该确定它是操作系统和不是一些响应它的应用程序(可能是一个密码捕获的木马)。
我想捕捉 CTRL + ALT + DEL 你需要编写某种设备驱动程序。
修改:另请参阅This answer。我没试过,但问题非常相似。
答案 2 :(得分:1)
虽然它有可能,但这不是一件容易的事,也不是可以在C#中完成的事情。 This Article将向您展示如何使用组策略编辑器禁用 CTRL + ALT + DEL 。要永久禁用组合,您需要编写自己的键盘驱动程序或编写自己的GINA存根(图形标识和身份验证)。
答案 3 :(得分:0)
可以选择 CTRL + ALT + DEL 组合,但不能禁用它。
我尝试使用SetWindowsHookEx
和WH_KEYBOARD_LL
禁用它,当 CTRL + ALT + DEL时,您可以成功收到通知按,但你无法做任何事情。
答案 4 :(得分:0)
可以阻止 CTRL + ALT + DEL 组合。但是,您不能真正禁用它。据我所知,有两种可能的方法。
HKLM\System\CurrentControlSet\Control\Keyboard Layout\Scancode Map
请检查以下内容:Disabling Windows Hot Keys
请检查以下内容:C++ code to disable CTRL+ALT+DEL。
答案 5 :(得分:-1)
您需要执行一些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/