使用.net解锁本地计算机

时间:2011-04-23 12:34:10

标签: .net windows

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

2 个答案:

答案 0 :(得分: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.如果要为Windows XP实现相同的结果,则需要使用名为GINA的类似机制。 在这里,您可以阅读有关GINA的更多信息:Winlogon and GINA

有一种黑客可以在Windows XP中“解锁”会话。

Windows XP中的WinLogon创建了一个额外的桌面,并在用户选择锁定会话时切换到该桌面。可以使用Windows API切换回“普通”桌面。除了WinLogon之外,一切都工作正常,尽管该系统已锁定且对Ctrl-Alt-Del没有反应。 我相信它不适用于Windows Vista和7.但你可以试试。它可以比实现自定义凭据提供程序简单。

以下是如何执行此操作的示例:Remotely Unlock a Windows Workstation

我希望这能回答你的问题。

答案 1 :(得分:1)

不存在,至少不在您的问题中指定的上下文中。但我不得不问 - 你为什么要解锁它?如果您需要运行应用程序,则无需解锁该机器即可。