解锁本地计算机使用.net

问题描述:

有没有什么办法,没有使用DLL注入,服务,以及不使用.net解锁本地计算机? Windows用户名和密码可用于我的程序。解锁本地计算机使用.net

+0

由于VNC可以做到这一点,我期望在查看VNC源代码后,您可以通过一些pinvoke调用模仿它的行为。 – 2011-04-23 13:05:43

我认为没有.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

不,没有,至少没有在您的问题中指定的上下文内。但我必须问 - 为什么你想要解锁?如果您需要运行应用程序,则无需为解决此问题而解锁机器。

+2

我试图在我离开时使用手机和蓝牙锁定屏幕,并在返回时解锁它。 – Soumya 2011-04-23 13:49:43

+1

使用蓝牙连接删除/重新建立(解除)锁定系统。听起来很安全..... – 2013-09-26 05:24:22