我目前正在开发一种安装程序。它有一个系统检查页面,我可以在其中检查是否满足所有要求。一项要求是 BitLocker 的可用性。
目前,我通过尝试创建一个实例来检查 BitLocker,Win32_EncryptableVolume
然后检查是否引发了异常。但我想知道是否有更优雅的方式。
我的方法目前看起来基本上是这样的:
public static bool IsBitlockerAvaliable()
{
try
{
var path = new ManagementPath
{
NamespacePath = @"\ROOT\CIMV2\Security\MicrosoftVolumeEncryption",
ClassName = "Win32_EncryptableVolume"
};
using (var wmi_class = new ManagementClass(path))
{
foreach (var o in wmi_class.GetInstances())
{
var vol = (ManagementObject) o;
if (vol == null)
throw new Exception("Vol is null");
Debug.WriteLine(vol);
}
}
return true;
}
catch (ManagementException e)
{
// No Admin rights is a different issue
if (e.ErrorCode == ManagementStatus.AccessDenied)
{
throw new AccessViolationException();
}
return false;
}
catch (Exception e)
{
return false;
}
}