Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Bitlocker状态的WMI代码创建者-我哪里出错了?_C#_Encryption_Wmi - Fatal编程技术网

C# Bitlocker状态的WMI代码创建者-我哪里出错了?

C# Bitlocker状态的WMI代码创建者-我哪里出错了?,c#,encryption,wmi,C#,Encryption,Wmi,我正在使用WMI代码创建者,代码看起来可以从应用程序正常工作。然而,它带来了我的代码内部的错误,我似乎无法动摇。我应该有一个参考资料才能让它发挥作用吗?如果是,我在哪里可以买到 public class MyWMIQuery { public static void Main() { try { ManagementObjectSearcher searcher =

我正在使用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);
            }
        }
    }


(单击查看大图)

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

名称空间:系统管理
程序集:System.Management(在System.Management.dll中)

第一行告诉您需要使用System.Management添加
或do
System.Management.ManagementObjectSearcher

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


问题的第二部分是,您的项目中有一个名为
Compliance Guide.ManagementObject
的类,Visual Studio正在提取该引用,而不是
System.Management.ManagementObject
,请将您的foreach替换为

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

强制它使用正确的类。

我怀疑是否有人能告诉您什么是“合规指南”。听起来你一直在疯狂地创造机会试图解决这个问题。这是一个非常简单的方法,确保您已经添加了对System.Management的引用,并使用System.Management放置
位于文件顶部。这是我通过另一个网站找到的一段代码,从未解析过。ComplianceGuide只是应用程序名称空间,它已在代码中进行了修改以适应。谢谢你发现了。好吧,除了一个错误,我把所有的错误都查出来了。这就是“foreach”,显然我对“GetEnumerator”没有定义。如何解决此问题?不知道,
ManagementObjectCollection
确实实现了
IEnumerable
,因此不应该发生错误。我会用更新的代码问一个新问题,问为什么foreach不工作。我在上面添加了信息,包括错误的图像。到目前为止,我已经按照您的建议添加了引用并更改了Foreach行。从您的图像中可以看到
searcher
是一个
合规指南。ManagementObjectSearcher
不是
System.Management.ManagementObjectSercher
。我不知道你为什么要重新创建所有的管理类,但是那些命名冲突是你的问题。用
System.Management.ManagementObjectSearcher searcher=new System.Management.ManagementObjectSearcher(…
小问题)替换searcher的声明。如何获取此控制台数据并在文本框中显示读取值?