c++ - TeamViewer 如何以编程方式在 Windows 上模拟 Ctrl-Alt-Del?
问题描述
TeamViewer 和其他远程控制软件如何模拟 Alt-Ctr-Del 按键,也称为 Windows 安全注意序列 (SAS)?
- 许多论坛表示这是不可能的,但事实却与他们背道而驰。:)
- SendSAS功能看起来是最明显的答案,但这需要更改组策略、绕过 UIPI等,所以它绝对不是仅运行的 TeamViewer 所做的。
- 另一个常见的建议是使用专有的 SasLibEx 库,但该库已停产,仅适用于 Windows Vista。
- 旧的 Stackoverflow 答案差点错过,但不适用于较新的 Windows
SendInput
不适用于 Alt-Ctrl-Del,如果它被发送到winsta0\winlogon
桌面也不行PostMessage(HWND_BROADCAST, WM_HOTKEY, 0, MAKELONG( MOD_CONTROL | MOD_ALT, VK_DELETE));
- 不- WmsgSendMessage在下一个人的建议下进行了尝试,结果证明它并不比 SendSAS 更好或不同。
- 键盘过滤器驱动程序可能是一种解决方案,但它们需要代码签名和特殊权限才能安装,并且实施它们既不适合胆小的人。我还验证了
driverquery
仅运行的 Team Viewer 不会安装驱动程序。
那么,知道其他人是如何做到的吗?
SAS 实现的内部结构很好地概述了它在幕后发生的事情。
解决方案
我发现,有一个未记录的安全桌面 LRPC 接口(又称安全桌面 LRPC 接口)。Windows 组件本身和一些第三方库使用的Winlogon RPC 接口。这是我得到的一切:
- Mark E. Russinovich的《SAS 实现内部原理》一书很好地概述了幕后发生的事情
- 两个不起眼的网站提供了一些关于界面本身的细节,但对我来说这太少了,无法使用它们。(链接 1 ,链接 2 )
推荐阅读
- android-animation - 如何在一个地方为所有过渡定义动画?
- outlook - 将 Sprint 容量与 Outlook 日历联系起来
- kendo-grid - 如何在剑道中创建嵌套网格?
- python - 如何使搜索栏在 django 中工作?
- python - ValueError:比较熊猫中系列和数据框之间的标签(相同标记的错误)
- php - 如何实现从嵌套 DVI 到包含类到样式的表格的代码转换?
- c++ - 有人可以向我解释每段代码吗,我不明白,emplace_hint() 函数如何工作并加快插入过程
- oracle - 我在 oracle 12c 的 blob 列中调整图像大小有问题
- javascript - 如何使用javascript多次更改跨度内容
- api - 我如何发送带有参数的发布请求并获取响应 - React Native