none
判断BitLocker是否处于加密 RRS feed

  • 问题

  • 要编写一个C#程序,判断某个分区是否已经使用BitLocker加密,并且是否为解锁或锁定状态,有没有相应API可调用?
    2013年10月12日 16:07

答案

  • 正确的写法是:

    第一句必须修改为:

                ManagementPath path = new ManagementPath();
                path.NamespacePath = "\\ROOT\\CIMV2\\Security\\MicrosoftVolumeEncryption";
                path.ClassName = "Win32_EncryptableVolume";
    
                ManagementClass objectSearcher = new ManagementClass(path);

    然后删除在try块中对objectSearcher实例化的语句。

    此修改目的在于声明该类所在命名空间。

    必须以管理员身份运行。

    • 已编辑 山宏岳 2013年10月31日 10:52
    • 已标记为答案 山宏岳 2013年10月31日 10:52
    2013年10月31日 10:51

全部回复

  • 你好山宏岳:

    欢迎来到MSDN论坛。

    首先在.net里面没有现成的封装好的API来操作BitLocker。

    你可以通过ManagementClass来获取BitLocker状态,示例代码:

    ManagementClass objectSearcher;
    List<string> BitLocker = new List<string>();
    
    try
    {
        objectSearcher = new ManagementClass("Win32_EncryptableVolume");
        foreach (var item in objectSearcher.GetInstances())
        {
            BitLocker.Add(item["DeviceID"].ToString());
            BitLocker.Add(item["ProtectionStatus"].ToString());
        }
    }
    catch
    {
        BitLocker.Add("Error, could not retrieve data. \n");
    }

    或者参考这篇帖子:

    http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/9ee35234-663b-40b9-b084-a1f40da3b819/how-to-determine-whether-a-volume-is-encrypted-with-bitlocker-using-win32-api?forum=windowssecurity

    使用GetEncryptionMethod这个方法。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2013年10月14日 7:48
    版主
  • 此法实测无效,反馈错误信息:“找不到”。

    电脑测试状况:Win8.1 64位 简体中文 专业版 有一个固定数据驱动器,已使用Bitlocker加密。

    代码编译环境:VS2013,C# WPF
    • 已编辑 山宏岳 2013年10月31日 10:41
    2013年10月31日 10:40
  • 正确的写法是:

    第一句必须修改为:

                ManagementPath path = new ManagementPath();
                path.NamespacePath = "\\ROOT\\CIMV2\\Security\\MicrosoftVolumeEncryption";
                path.ClassName = "Win32_EncryptableVolume";
    
                ManagementClass objectSearcher = new ManagementClass(path);

    然后删除在try块中对objectSearcher实例化的语句。

    此修改目的在于声明该类所在命名空间。

    必须以管理员身份运行。

    • 已编辑 山宏岳 2013年10月31日 10:52
    • 已标记为答案 山宏岳 2013年10月31日 10:52
    2013年10月31日 10:51