2008-11-22 51 views
5

除了只能由O/S提供的应用程序启动快捷方式以外,Windows键盘挂钩等事情的合法用途是什么?在我看来,由于操作系统提供钩子来执行任何在任何情况下都不应该被任何人允许的事情,所以我们在关键记录器方面只有问题,除了O/S内核本身。全局键盘挂钩的合法用途是什么?

编辑:好的,所以给它们一些合法的地方,它们可能是必需的,不应该提供高水平的全局关闭它们的能力,并且只允许在逐个程序的基础上有例外吗?

+0

您通常可以...例如,OS X有一个安全的输入断言,它会阻止为键盘事件注册的所有程序,直到断言被清除。这在默认情况下被激活,例如来自IB的密码框和在安全模式下的终端输入。 – 2008-11-22 03:04:34

回答

2

并非如此,有些环境中计算机的所有者可能想要停止诸如Ctrl + Alt + Delete ...例如,Kiosk之类的东西,或...... Best Buy?

+0

由于键盘挂钩是安全注意序列的一部分,因此无法停止Ctrl + Alt + Delete。如果你想改变登录过程,你需要编写一个自定义的dll来替换msgina.dll – 2008-11-22 04:16:44

+0

人们通常称之为键盘钩子。 (至少我们过去是这么做的:) :) – 2008-11-22 11:39:07

0

可能没有很多合法用途。不过,我认为你不应该故意限制系统的功能,只是为了使它更安全。

此外,如果您知道密钥记录器在那里,并且您自己安装它,密钥记录器并不是一件坏事。

1

例如,我安装了两个应用程序;

  • 一个地图的Windows-V作为paste无格式文本
  • 另外一个modifies如何大写锁定作品

我觉得他们两个都需要一个钩子。

1

我写了一个应用程序,可以让我在显示器上放置虚拟便签。我用一个操作系统键盘挂钩来绑定一个热键。

我在设置中有一个选项来禁用挂钩。

3

我目前正在为企业客户端开发移动应用程序平台/硬件抽象层,并且一个要求是屏幕保护程序会在一段时间不活动后才会启动。由于移动设备没有移动鼠标,“活动”由按键或屏幕水龙头组成。我们的其中一款设备没有触摸屏,而且为了长话短说,移动硬件供应商没有正确实施Win32 API调用,这可以让我获得自上次用户输入以来的时间。

由于硬件供应商不愿意正确实施Win32 API,我知道的另一个最好的方法是确保我的控制台应用程序可以捕获系统上任何应用程序中的按键,这是安装全局键盘钩子。

也就是说,我同意平均消费者情况与我的情况有很大的不同,操作系统应该允许用户将白名单这样的活动列入白名单。