1

我正在尝试从远程主机获取 BitLocker 信息。我曾经使用 PowerShell (Get-BitLockerVolume) 来执行此操作,它会提供很多有用的信息。当我尝试使用 C# 时,我没有得到太多信息。查看微软的网站和进一步的研究,我找不到任何可以帮助我的东西。

有谁知道如何在 C# 中获得与 Get-BitLockerVolume 相同的输出?

顺便说一句,这是我在 C# 中测试的内容:

CimSession session = CimSession.Create(computerHostName);

IEnumerable<CimInstance> GI1 = session.QueryInstances(@"root\cimv2\Security\MicrosoftVolumeEncryption", "WQL", "SELECT * FROM Win32_EncryptableVolume");

foreach(CimInstance i in GI1)
{
    Console.WriteLine("MountPoint: {0}, Protection: {1}",
        i.CimInstanceProperties["DriveLetter"].Value,
        i.CimInstanceProperties["ProtectionStatus"].Value);
}
4

1 回答 1

0

正如 Jeroen 回忆的那样,您将能够在 WMI 实例上调用方法获取该信息。至于文档,Win32_EncryptableVolume仅公开以下属性:

class Win32_EncryptableVolume
{
  string DeviceID;
  string PersistentVolumeID;
  string DriveLetter;
  uint32 ProtectionStatus;
};

要使用 WMI 和方法访问轻松获取所需的信息,您可以使用ORMi库:

例如,您可以像这样定义您的类:

public class Win32_EncryptableVolume : WMIInstance
{
  public string DeviceID {get; set;}
  public string PersistentVolumeID {get; set;}
  public string DriveLetter {get; set;}
  public int ProtectionStatus {get; set;}

  [WMIIgnore]
  public int Version {get; set;}

  public int GetVersion()
  {
     return WMIMethod.ExecuteMethod<int>(this)
  }
}

然后你可以做类似的事情:

WmiHelper _helper = new WmiHelper("root\\Cimv2"); //Define the correct scope

List<Win32_EncryptableVolume> volumes = _helper.Query<Win32_EncryptableVolume>().ToList();

foreach(Win32_EncryptableVolume v in volumes)
{
    v.Version = v.GetVersion();
}
于 2019-05-29T13:30:00.667 回答