如何解锁Windows锁屏?

如何使用Delphi解锁窗口锁屏? 我没有在Google或者Stackoverflow上find任何东西。 我已经尝试使用keybd_eventinput我的密码,但似乎事件不在锁屏上工作。

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

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

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

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

** SasLibEx是一个商业产品

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


好的,让我们澄清一下。 使用记录的API,你不能这样做。 您需要像@Remko为他的SasLibEx产品所做的那样对未记录的API进行反向工程。

Steamlink(一个硬件,可以让你的蒸汽游戏流到一个大屏幕)目前有一个问题,如果你的屏幕是在房子的不同部分,为了发挥你需要走到你的电脑解锁然后走回你的大屏幕。

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

 @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来模拟相同的。

这实际上可以使用powershell,psexec和windows屏幕键盘来完成。 虽然一个程序不能发送输入到winlogon,但是windows osk可以,当然一个程序可以发送输入到osk。

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

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

[背景]

默认桌面是你阅读这篇文章时使用的。 当你按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。 不知道这是如何工作的; 但对我来说,它解锁锁定屏幕。