В настоящее время я работаю над программой-установщиком. Он имеет страницу проверки системы, где я проверяю, выполнены ли все требования или нет. Одним из требований является наличие 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;
}
}