0

我目前正在开发一种安装程序。它有一个系统检查页面,我可以在其中检查是否满足所有要求。一项要求是 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;
    }
}
4

0 回答 0