在Visual Basic中检查Bitlocker加密状态

时间:2014-01-30 17:37:35

标签: vb.net visual-studio wmi

我正在尝试通过Visual Basic在Visual Studio中构建一个应用程序,并且正在提取当前机器的信息。基本上,我想要做的是在Visual Basic中拉出Bitlocker的加密状态,如果C:Drive是Bitlocked或者不是Bitlocked,则输出。

我在互联网上寻找能够完成此任务的东西,但我看到的一切都与WMI有关。 WMI也需要安装在您将使用它的每台机器上。我只是希望能够在机器运行文件后进入机器并将所有信息输出到表单中。我现在提取所有内容的代码如下:

Public Class ComputerInformation
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        TextBoxComputerName.Text = Environment.MachineName
        TextBoxOSVersion.Text = System.Environment.OSVersion.ToString
        TextBoxOSFullName.Text = My.Computer.Info.OSFullName
        TextBoxCurrentUser.Text = System.Environment.UserName
        TextBox64Bit.Text = System.Environment.Is64BitOperatingSystem
        TextBoxSystemDirectory.Text = System.Environment.SystemDirectory
        TextBoxDomain.Text = System.Environment.UserDomainName
        ' CHECK BITLOCKER STATUS HERE.
    End Sub
End Class

一些帮助,也许一个解释将不胜感激! 谢谢!

2 个答案:

答案 0 :(得分:8)

是的,您使用Win32_EncryptableVolume WMI类进行查询。 ProtectionStatus属性会告诉您是否已启用加密。 WMI不必 。但是,只有在计算机上存在Bitlocker时,Win32_EncryptableVolume类才可用。

要开始使用,请先下载WMI Code Creator utility。它允许您使用WMI查询,并将自动生成您需要的VB.NET代码并进行测试。在菜单中,使用代码语言并选择“Visual Basic.NET”。从Classes组合框中选择Win32_EncyptableVolume并选择ProtectionStatus属性。单击“执行代码”进行测试。将生成的源代码复制/粘贴到您的程序中。还要检查没有Bitlocker的机器上的代码,你需要捕获你得到的异常,这样你才能知道Bitlocker根本不存在。

答案 1 :(得分:1)

如上所述,Hans Passant使用WMI Code Creator实用程序。
选择名称空间Win32_EncryptableVolume时,可以从类组合框中选择root\CIMV2\Security\MicrosoftVolumeEncryption

您可以使用类似这样的方法来确定BitLocker是否处于活动状态/可用状态:

IShellProperty prop = ShellObject.FromParsingName("C:").Properties.GetProperty("System.Volume.BitLockerProtection");
int? bitLockerProtectionStatus = (prop as ShellProperty<int?>).Value;

if (bitLockerProtectionStatus.HasValue && (bitLockerProtectionStatus == 1 || bitLockerProtectionStatus == 3 || bitLockerProtectionStatus == 5))
   Console.WriteLine("ON");
else
   Console.WriteLine("OFF");

请注意,这是C#代码,但易于转换。

相关问题