簡體   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