我正在与WMI代码创建者一起使用,并且该代码看起来可以从该应用程序正常工作。但是,它带有我似乎无法撼动的代码内部错误。我应该为此工作提供参考吗?如果可以,我在哪里可以得到?

    public class MyWMIQuery
    {
        public static void Main()
        {
            try
            {
                ManagementObjectSearcher searcher =
                    new ManagementObjectSearcher("root\\CIMV2\\Security\\MicrosoftVolumeEncryption",
                    "SELECT * FROM Win32_EncryptableVolume");

                foreach (System.Management.ManagementObject queryObj in searcher.Get())
                {
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("Win32_EncryptableVolume instance");
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("ProtectionStatus: {0}", queryObj["ProtectionStatus"]);
                }
            }
            catch (ManagementException e)
            {
                MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
            }
        }
    }


c# - 用于Bitlocker状态的WMI代码创建者-我在哪里出错?-LMLPHP
(点击查看大图)

最佳答案

如果在MSDN中搜索ManagementObjectSearcher,则会得到this page。在.NET类的每个MSDN页面上,您将在页面顶部看到两条信息。


  命名空间:System.Management
  程序集:System.Management(在System.Management.dll中)


第一行告诉您,如果要引用该对象,则需要添加using System.Management;或执行System.Management.ManagementObjectSearcher

第二行告诉您您的项目必须引用文件System.Management.dll才能使您的代码能够找到该类。如果在Add Reference Dialog中搜索,则需要在列表中查找System.Management(括号外的部分)。





问题的第二部分是您的项目中有一个名为ComplianceGuide.ManagmentObject的类,Visual Studio会选择该引用而不是System.Management.ManagementObject,将您的foreach替换为

foreach (System.Management.ManagementObject queryObj in searcher.Get())


强制它使用正确的类。

关于c# - 用于Bitlocker状态的WMI代码创建者-我在哪里出错?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30673984/

10-10 22:55