在我當前的C#代碼中,我能夠以編程方式鎖定Windows用戶會話(與Windows + L相同)。以編程方式解鎖Windows
由於應用程序仍然在運行,有沒有辦法從該C#程序解鎖會話。用戶憑證是已知的。該應用程序在Windows 7上運行。
在我當前的C#代碼中,我能夠以編程方式鎖定Windows用戶會話(與Windows + L相同)。以編程方式解鎖Windows
由於應用程序仍然在運行,有沒有辦法從該C#程序解鎖會話。用戶憑證是已知的。該應用程序在Windows 7上運行。
這裏有一些hackery要做到這一點:http://www.codeproject.com/Articles/16197/Remotely-Unlock-a-Windows-Workstation 雖然沒有自己測試。
不適用於.NET部分,但您也可以製作自己的自定義登錄UI並在其中注入一些機制。但它很容易成爲安全問題。
@Alagaros更新了鏈接 –
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的情況。
即使我使用System.Management,也會在運行時在foreach行上獲取無效的命名空間。 – DontFretBrett
問題是要解鎖窗口而不是解鎖bitlocker鎖定的驅動器 –
您需要自定義Windows憑據提供程序才能登錄。此外,您需要將用戶的憑據保存在某處登錄。Windows SDK中有一些示例7 https://www.microsoft.com/en-us/download/details.aspx?id=8279
有一系列項目可以幫助您在Samples\security\credentialproviders
下啓動。
解鎖屏幕:
CSampleCredential::Initialize
CSampleCredential::SetSelected
WM_TOGGLE_CONNECTED_STATUS
消息,看看如何觸發登錄這是一個痛苦的屁股,但它的作品。
如果您有憑據(用戶名和密碼),您還有其他問題。 –
重複http://stackoverflow.com/questions/5764174/unlock-local-computer-using-net –
我的建議是不鎖定工作站。我的意思是,如果你想解鎖,那麼就不要鎖定它。 –