2011-04-23 48 views
6

有沒有什麼辦法,沒有使用DLL注入,服務,以及不使用.net解鎖本地計算機? Windows用戶名和密碼可用於我的程序。解鎖本地計算機使用.net

+0

由於VNC可以做到這一點,我期望在查看VNC源代碼後,您可以通過一些pinvoke調用模仿它的行爲。 – 2011-04-23 13:05:43

回答

5

我認爲沒有.NET函數可以用來解鎖你的電腦,而且沒有簡單的方法來實現它。但有一種方法。

您需要實現您的自定義ICredentialProvider組件,將其掛載到Windows身份驗證機制中,並實現它與您的應用程序之間的通信。

Windows 7身份驗證機制由兩部分組成。他們是WinLogon和LogonUI。 LogonUI負責顯示登錄窗口和WinLogon關於用戶操作的通知。 Winlogon響應來自LogonUI的事件並執行所需的操作以登錄用戶,註銷用戶,鎖定會話和解鎖會話。

Microsoft提供了一種將自定義行爲掛鉤到LogonUI的機制。爲此,您需要創建一個實現ICredentialProvider的COM對象並將其註冊到系統中。您的組件可以告訴LogonUI告訴WinLogon解鎖會話。

下面是如何構建自定義憑據提供幾個例子: How to Build Custom Logon UI’s in Windows VistaCreate Custom Login Experiences With Credential Providers For Windows Vista

這種機制將適用於Windows Vista和Windows 7的工作,你需要使用稱爲GINA類似的機制,如果你想實現Windows XP的結果相同。 在這裏,您可以閱讀更多關於GINA的信息:Winlogon and GINA

在Windows XP中有一種可以「解鎖」會話的黑客攻擊。

Windows XP中的WinLogon創建了一個額外的桌面,並在用戶選擇鎖定會話時切換到該桌面。使用Windows API可以切換回「正常」桌面。除WinLogon外,一切正常,儘管該系統被鎖定,並且沒有對Ctrl-Alt-Del做出反應。 我相信它不適用於Windows Vista和7,但您可以嘗試。它可能比實現自定義憑據提供者簡單。

這裏是如何做到這一點的例子:Remotely Unlock a Windows Workstation

我希望這回答了你的問題。

+0

是的,這裏有一些額外的信息可能有助於http://stackoverflow.com/a/35173886/1895684 – 2016-07-20 20:27:07

1

不,沒有,至少沒有在您的問題中指定的上下文內。但我必須問 - 爲什麼你想要解鎖?如果您需要運行應用程序,則無需爲解決此問題而解鎖機器。

+2

我試圖在我離開時使用手機和藍牙鎖定屏幕,並在返回時解鎖它。 – Soumya 2011-04-23 13:49:43

+1

使用藍牙連接刪除/重新建立(解除)鎖定系統。聽起來很安全..... – 2013-09-26 05:24:22