2013-04-11 353 views
8

如何使用Delphi解鎖Windows鎖屏?我在Google或Stackoverflow上找不到任何東西。我已經嘗試使用keybd_event輸入密碼,但它看起來像事件不在鎖屏上工作。如何解鎖Windows鎖屏?

+1

你的意思是這需要'CTRL + ALT + DEL'屏幕?因爲這是故意設計的,不可能從Windows以外的任何應用程序解鎖它。 – 2013-04-11 18:04:56

+5

讓你的程序發送一封電子郵件給用戶:「嘿!請解鎖電腦。」 – 2013-04-11 18:15:07

+1

我認爲這可以從內核模式完成,但我沒有準確的說明,如何做到這一點。同樣爲了讓任何東西進入內核模式,您需要獲得管理員的直接許可(爲了安裝內核模式驅動程序)。 – 2013-04-11 18:43:48

回答

8

您無法以編程方式從用戶空間解鎖鎖定屏幕。這是設計。


好的,讓我們來澄清一下。使用記錄的API,你不能這樣做。您需要對@Remko爲其SasLibEx產品完成的未記錄API進行反向工程。

+7

同意。如果任意應用程序可以隨意解鎖PC,那將是巨大的安全風險。 – 2013-04-11 18:15:19

+1

這實際上是鎖定屏幕的目的,鎖定你的電腦。 – 2013-04-11 18:35:30

+1

我在想「終端服務客戶端」......也許我已經關閉了,但似乎有一種自動化的方式來解鎖用「自動」登錄的用戶帳戶。 – kobik 2013-04-11 20:54:29

8

Remko Weijnen在這個方向上有非常有趣的項目。他發佈了一個命令行工具(Winstation Locker),該工具能夠在不知道已鎖定計算機的用戶的密碼的情況下解鎖本地/ 遠程 Windows XP工作站。

對於Windows Vista及更高版本,他開發了SasLibEx **庫,該庫甚至可以解鎖特定的終端服務會話,而且不需要用戶名/密碼。

這兩種方法都要求您在目標計算機上擁有管理權限/帳戶。

請注意,所有這些工具的使用可能被視爲非法,不恰當,不容忍或刑事討厭的黑客(?)。應與您的客戶/僱主討論,並應謹慎使用!

** SasLibEx是一個商業產品

+4

感謝您鏈接到我的工具!但請注意,Winstation Locker是免費的,但SasLibEx是一個商業解決方案。 – Remko 2013-04-11 21:21:06

+2

那麼,這個工作到底如何? – 2013-04-11 21:48:13

+0

@DavidHeffernan指向Winstation Locker的鏈接完全描述了它的工作方式......至於SasLibEx,它不是公開的,但是企業版帶有源代碼! – Remko 2013-04-12 07:17:11

2

這其實是可以做到使用PowerShell,PSEXEC和Windows屏幕鍵盤。雖然一個程序不能發送輸入到winlogon,但是windows osk可以,而且肯定程序可以發送輸入到osk。

+4

如果您提供示例,我接受您的答案作爲解決方案。 – fnkr 2014-08-22 19:17:55

1

注意:以下是遠程解決方案。

據我所知,鍵盤事件不會在鎖定屏幕上工作,除非你從默認桌面Winlogon中桌面交換機(桌面指的是所有活動的容器)

[背景]

默認桌面是您在閱讀本文時使用的桌面。 Winlogon中會當您按下被設置爲活動的一個按Ctrl + Alt + Del鍵

[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。不知道這是如何工作的;但對我來說,它解鎖了鎖定屏幕。

+2

此外,您需要添加tsdiscon.exe的註冊表項才能使用 Windows註冊表編輯器版本5。00 [HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\的Windows NT \ CURRENTVERSION \ Winlogon中] 「DefaultDomainName」= 「域名」 「DefaultUserName」= 「則domainName \\ username」 的 「AutoAdminLogon」= 「1」 「 DefaultPassword 「=」 密碼」 – 2014-10-10 19:49:35

5

Steamlink(一種硬件,可以讓你流你的Steam遊戲的大屏幕)目前有一個問題,如果你的屏幕是在房子的不同部分,以發揮你需要步行到你的電腦解鎖它,然後走回你的大屏幕。

爲了使它不那麼痛苦,人在社會上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來模擬它。