2

我正在编写一个开源远程桌面工具,类似于 VNC 和 TeamViewer。我注意到 TeamViewer 继续在切换用户或工作站锁定屏幕上捕获屏幕 - 并允许远程用户输入密码并解锁工作站。我也想这样做。

我读了:

更新:在 Windows 登录屏幕上与用户交互

https://stackoverflow.com/questions/9485530/capturing-image-during-windows-logon-invalid-password

将命令按钮添加到 Windows 登录屏幕

从 Windows 登录屏幕挂钩热键

https://stackoverflow.com/questions/7183241/launch-windows-on-screen-keyboard-at-logon-screen-on-win7

模拟按键的驱动程序

通过服务删除 Windows 登录屏幕

如何在 Windows 7 登录屏幕中捕捉按键?

在 Windows XP 中使用 C# 在登录屏幕上显示窗口

从这些帖子中,我收集到在隔离会话中模拟输入绝对不是对 SendInput() 的简单调用。但是是否可以使用驱动程序(我相信它专门是一个键盘过滤器驱动程序,但我不确定)?如果是这样,我正在考虑用 C# 编写一个服务(以便它在用户会话之外运行),它与拦截驱动程序交互以模拟按键。

作为回应:“你为什么不试试呢?”,目前还没有用于 Interception 的 .NET 包装器让我测试这样的服务,所以如果普遍认为这是不可能的,我不想花时间编写那个 .NET 包装器。

我找到了一个名为 Interception 的键盘驱动程序(将来会开源发布)。您可以直接在此处找到源代码(源代码只是围绕实际内核驱动程序的 C 通信 API 包装器)

我有另一个问题......我对什么文件构成驱动程序感到困惑。他用 C 语言编写的 Interception DLL 库编译为 .DLL。但是,不是某些 .sys 扩展名的驱动程序——你如何将拦截 DLL 编译成实际的驱动程序——然后你将如何安装它?

编辑: .NET 包装器确实存在。当我按下“x”键时,我修改了示例控制台应用程序以输入我的整个密码,并且它成功运行 - 不仅在工作站锁定屏幕上,而且在 Windows 登录屏幕上。所以它有效。

编辑: 此键盘驱动程序的 C# 包装库在这里

4

2 回答 2

2

目前,实际的驱动程序不是开源的。驱动安装程序安装它们(keyboard.sys和mouse.sys),开源的只是与它们通信的API。我也计划在开源之前重写内核组件。

于 2012-03-12T14:36:21.603 回答
1

对于其他对答案感兴趣的人:是的,它有效。

使用位于https://github.com/candera/kchordr的 Interception 键盘驱动程序的 .NET 包装器,然后玩转。即使在 Windows 登录屏幕上,它也会替换密钥。

于 2012-03-11T04:38:22.833 回答