【问题标题】:Unlock local computer using .net使用 .net 解锁本地计算机
【发布时间】:2011-04-23 12:34:10
【问题描述】:

有什么方法可以在不使用 DLL 注入、服务等的情况下使用 .net 解锁本地计算机?我的程序可以使用 windows 用户名和密码。

【问题讨论】:

  • 由于 VNC 可以做到,我希望在查看 VNC 源之后,您将能够通过一些 pinvoke 调用来模仿它的行为。

标签: .net windows


【解决方案1】:

我认为没有可用于解锁计算机的 .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 Vista, Create 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

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

【讨论】:

【解决方案2】:

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

【讨论】:

  • 我正在尝试使用手机和蓝牙在离开时锁定屏幕,并在返回时解锁。
  • 使用蓝牙连接断开/重新建立(解锁)系统。听起来很安全.....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多