如何使用Delphi解锁Windows锁屏?我没有在Google或Stackoverflow上找到任何内容。我已经尝试使用keybd_event输入我的密码,但似乎事件在锁屏上不起作用。
答案 0 :(得分:9)
您无法以编程方式从用户空间解锁锁定屏幕。这是设计的。
好的,让我们澄清一下。使用文档化的API,您无法执行此操作。您需要对@Remko为其SasLibEx产品所做的事项反向设计未记录的API。
答案 1 :(得分:8)
Remko Weijnen在这方面有非常有趣的项目。他发布了一个命令行工具(Winstation Locker),它能够解锁本地/ 远程 Windows XP工作站,而无需知道锁定计算机的用户的密码。
对于Windows Vista及更高版本,他开发了SasLibEx **库,可以解锁甚至特定的终端服务会话,同样没有用户名/密码。
这两种方法都要求您在目标计算机上拥有管理权限/帐户。
请注意,所有这些工具都使用可能被视为非法,不当,不容忍或犯罪的恶意黑客(?)。应与您的客户/雇主讨论,并应谨慎使用!
** SasLibEx是商业产品
答案 2 :(得分:5)
Steamlink(一种允许你将蒸汽游戏流式传输到大屏幕的硬件)目前存在一个问题,如果你的屏幕位于房子的不同部分,为了玩你需要走到你的电脑将其解锁,然后走回大屏幕。
为了减少痛苦,社区中的人came up with this script:
@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来模拟它。
答案 3 :(得分:2)
这实际上可以使用powershell,psexec和windows onscreen键盘完成。虽然程序无法向winlogon发送输入,但是windows osk可以,而且程序确实可以向osk发送输入。
答案 4 :(得分:1)
注意:以下是远程解决方案。
据我所知,除非您从默认桌面切换到 Winlogon 桌面(桌面指的是所有活动的容器),否则键盘事件不会在锁定屏幕上工作< / p>
[背景]
默认桌面是您在阅读此帖子时使用的桌面。 按 Ctrl + Alt + Del
时,Winlogon将被设置为活动状态[XP]
您需要从默认切换到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。不确定这是如何工作的;但对我来说,它解锁了锁屏。