繁体   English   中英

以编程方式解锁 Windows

[英]Unlock Windows programmatically

在我当前的 C# 代码中,我能够以编程方式锁定 Windows 用户会话(与 Windows + L 相同)。

由于应用程序仍在运行,有没有办法从该 C# 程序解锁会话。 用户凭据是已知的。 该应用程序在 Windows 7 上运行。

您需要一个自定义的 Windows 凭据提供程序来为您登录。 此外,您需要将用户的凭据保存在某处才能登录。 Windows SDK 7 中有一些示例https://www.microsoft.com/en-us/download/details.aspx?id=8279

Samples\\security\\credentialproviders下有很多项目可以帮助您入门。

要解锁屏幕:

  • CSampleCredential::Initialize设置用户名/密码
  • CSampleCredential::SetSelected中将 autologin 设置为 true
  • 搜索硬件提供程序示例以获取WM_TOGGLE_CONNECTED_STATUS消息以查看如何触发登录
  • 构建某种方式与您的应用程序通信以触发解锁(例如本地 tcp 服务器)

这是一个痛苦的屁股,但它的工作原理。

这里有一些技巧可以做到这一点: http : //www.codeproject.com/Articles/16197/Remotely-Unlock-a-Windows-Workstation虽然我自己没有测试过。

不适用于 .NET 部分,但您也可以制作自己的自定义登录 UI 并在其中注入一些机制。 虽然它很容易成为安全问题。

    var path = new ManagementPath();
    path.NamespacePath = "\\ROOT\\CIMV2\\Security\\MicrosoftVolumeEncryption"; path.ClassName = "Win32_EncryptableVolume";

    var scope = new ManagementScope(path, new ConnectionOptions() { Impersonation = ImpersonationLevel.Impersonate });

    var management = new ManagementClass(scope, path, new ObjectGetOptions());

    foreach (ManagementObject vol in management.GetInstances())
    {

        Console.WriteLine("----" + vol["DriveLetter"]);
        switch ((uint)vol["ProtectionStatus"])
        {
            case 0:
                Console.WriteLine("not protected by bitlocker");
                break;
            case 1:
                Console.WriteLine("unlocked");
                break;
            case 2:
                Console.WriteLine("locked");
                break;
        }

        if ((uint)vol["ProtectionStatus"] == 2)
        {
            Console.WriteLine("unlock this driver ...");

            vol.InvokeMethod("UnlockWithPassphrase", new object[] { "here your pwd" });

            Console.WriteLine("unlock done.");
        }
    }

注意:这仅在您以管理员身份运行 Visual Studio 时有效。

当然不能解锁。 解锁会话需要用户亲自到场以输入其帐户凭据。 允许软件执行此操作,即使使用已保存的凭据,对于使用工作站锁定的许多其他情况也将是一个安全问题。

不,按照设计,没有办法做到这一点。 您的情况是什么,为什么需要锁定/解锁工作站?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM