【问题标题】:Checking Bitlocker Encryption Status in Visual Basic在 Visual Basic 中检查 Bitlocker 加密状态
【发布时间】:2014-01-30 17:37:35
【问题描述】:

我正在尝试通过 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

我们将不胜感激一些帮助和解释! 谢谢!

【问题讨论】:

  • 我做了一些搜索,发现 FMAPI library 中的 DetectEncryptedVolume 函数似乎可以满足您的需求。您应该能够在不通过 WMI 的情况下调用它。不幸的是,我对 Bitlocker 的了解还不够,无法进一步研究它,但希望这会有所帮助。
  • 感谢史蒂文。但是,我确实看到代码是 C++,我正在使用 Visual Basic 编译我的所有数据!不过谢谢!
  • 可以从 VB.NET 中通过 pinvoke 调用 C++ dll 中的函数。

标签: vb.net visual-studio wmi


【解决方案1】:

是的,您可以使用Win32_EncryptableVolume WMI 类来查询。 ProtectionStatus 属性告诉您是否启用了加密。 WMI 确实必须安装。但是,Win32_EncryptableVolume 类只有在机器上存在 Bitlocker 时才可用。

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

【讨论】:

  • 感谢汉斯的解释。所以你是说即使我当前的机器上没有 Bitlocker,该类也不会出现,我什至无法在 Visual Studio 中引用它?因为,我在没有 Bitlocker 的机器上编写这个应用程序。我下载了 WMI 代码创建器,甚至没有看到 Win32_ExcryptableVolume ...我对此是否正确?谢谢!
  • “引用”一词不合适,WMI 类不是 .NET 类。您引用 System.Management 类。您可以从 WMI Code Creator 工具中看出“Win32_EncryptableVolume”仅以字符串形式出现。您确实需要在安装了 Bitlocker 的机器上运行它来测试它。
  • 您还必须安装 .Net Framework 3.5 或更高版本。刚刚在我的 Windows 10 测试系统上复制,他抱怨它。好工具,感谢 kabin 提供的组合框提示,提示您选择正确的命名空间。
【解决方案2】:

正如上面所说的 Hans Passant,使用 WMI Code Creator 实用程序。
当您选择命名空间root\CIMV2\Security\MicrosoftVolumeEncryption 时,您可以从类组合框中选择Win32_EncryptableVolume

您可以使用类似的方法来确定 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# 代码,但很容易转换。

【讨论】:

    猜你喜欢
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    相关资源
    最近更新 更多