11

如何使用 Delphi 解锁 windows 锁屏?我没有在 Google 或 Stackoverflow 上找到任何东西。我已经尝试使用 keybd_event 输入我的密码,但似乎这些事件在锁屏上不起作用。

4

5 回答 5

9

您无法从用户空间以编程方式解锁锁定屏幕。这是设计使然。


好的,让我们澄清一下。使用记录在案的 API,您无法做到这一点。您需要像 @Remko 为他的 SasLibEx 产品所做的那样对未记录的 API 进行逆向工程。

于 2013-04-11T18:08:35.833 回答
8

Remko Weijnen在这个方向上有非常有趣的项目。他发布了一个命令行工具(Winstation Locker),它能够解锁本地/远程Windows XP 站,而无需知道锁定计算机的用户的密码。

对于 Windows Vista 及更高版本,他开发了SasLibEx ** 库,该库甚至可以解锁特定的终端服务会话,同样无需用户名/密码。

这两种方法都要求您在目标计算机上具有管理权限/帐户。

请注意,所有这些工具都使用了可能被视为非法、不适当、不宽容或犯罪(?)的讨厌的黑客行为。应与您的客户/雇主讨论并谨慎使用!

** SasLibEx 是一个商业产品

于 2013-04-11T21:18:35.983 回答
5

Steamlink(一种允许您将 Steam 游戏流式传输到大屏幕的硬件)目前存在一个问题,即如果您的屏幕位于房子的不同位置,为了玩游戏,您需要走到您的电脑前解锁它然后走回你的大屏幕。

为了减轻痛苦,社区中的人们想出了这个脚本

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "$sessionid=((quser $env:USERNAME | select -Skip 1) -split '\s+')[2]; tscon $sessionid /dest:console" 2> UnlockErrors.log

它可以远程解锁你的电脑。你可以从 Delphi 调用 tscon.exe 来模拟它。

于 2015-12-29T01:05:31.773 回答
3

这实际上可以使用 powershell、psexec 和 windows 屏幕键盘来完成。虽然程序不能向 winlogon 发送输入,但 windows osk 可以,而且果然程序可以向 osk 发送输入。

于 2014-08-22T05:03:44.390 回答
1

注意:以下是远程解决方案。

据我所知,除非您从默认桌面切换到Winlogon桌面(桌面指的是所有活动的容器),否则键盘事件不会在锁定屏幕上起作用

[背景]

默认桌面是您阅读本文时使用的桌面。Winlogon 将是按Ctrl+Alt+Del时设置为活动的那个

[经验值]

您需要从默认切换到 WinLogon 桌面[检查参考],然后您将能够通过获取解锁计算机的窗口句柄来解锁机器

IntPtr windowHandle = (IntPtr)FindWindow(null, "Unlock Computer");//Getting Window handle

将用户名和密码发送到相应的编辑框。

参考 http://www.codeproject.com/Articles/16197/Remotely-Unlock-a-Windows-Workstation

[Win7] 从远程运行 tsdiscon.exe。不确定这是如何工作的;但对我来说,它解锁了锁定屏幕。

于 2014-10-10T19:12:01.893 回答