C# ManagementObject类未显示在System.Management命名空间中

C# ManagementObject类未显示在System.Management命名空间中,c#,.net,C#,.net,我正在尝试在windows窗体中编写一些WMI,ManagementObject给了我 “找不到类型或命名空间名称‘ManagementObject’”错误 这是我不完整的代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Threading; using System.Security.Policy; usi

我正在尝试在windows窗体中编写一些WMI,ManagementObject给了我

“找不到类型或命名空间名称‘ManagementObject’”错误

这是我不完整的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading;
using System.Security.Policy;
using System.Management;
using System.Management.Instrumentation;


namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {


            ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"C:\"");

确保您的项目未设置为根据.NET 4 Framework客户端配置文件进行编译


有关详细信息,请参阅。

是否已添加对System.Management程序集的引用?

您需要将对System.Management.dll的引用添加到项目中


您可以查看System.Management.Instrumentation,而无需添加对System.Management.dll的引用,因为它包含在不同的库中(System.Core.dll,自动作为引用包含),但是,如果不显式添加对System.Management.dll库的引用,则无法访问该命名空间包含的其他类型。

右键单击右侧的引用,然后手动添加System.Management。即使我把它包括在using语句中,我仍然必须这样做。一旦我这样做了,一切都很好。

我认为问题在于Win32\u LogicalDisk没有WMI对象。DeviceID=\“C:\”。 尝试替换:

ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"C:\"");
与:

然后逐步浏览每个字段:

foreach (ManagementObject o in disk.Get()){
    //Do what ever you need here.... For example:  
    Console.WriteLine(o.ToString());
}

在解决方案资源管理器中,右键单击引用,然后添加引用。。。在Framework下,您应该激活System.Management Framework。

~只需使用nuget manager添加System.Management,
这对我有用!c#

我拥有的Visual Studio版本没有通过导入“System.Management”命名空间导入ManagementObjectSearcher。如果您有相同的问题,请尝试通过执行以下步骤添加对“System.Management.dll”的引用

  • 单击Visual Studio中解决方案资源管理器上的项目属性。 转到“参考资料”
  • 单击“添加”以添加新引用。 点击“浏览…”
  • 导航到“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727”
  • 添加对“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Management.dll”的引用

  • 我查看了链接并检查了我的目标框架。它是.NET 3.5。当我们使用System.Management;直接告诉Visual Studio时,为什么Visual Studio不自动包含引用(这是正确的行为。奇怪的是,即使未添加其引用,它也能识别
    System.Management
    。这是一个错误还是必须如此?我认为这是因为我使用的是.net4.0。请注意,如果您将csproj设置为只读(例如,使用Performance),Visual Studio中的引用列表将显示它在其中,但实际上不会添加它!执行此操作后仍会显示此错误。对于其他找不到它的用户,请在“引用管理器”中展开“程序集”并转到“框架”“。虽然对我来说,它已经被勾选了,但在任何不是开发机器的机器上仍然不起作用。
    foreach (ManagementObject o in disk.Get()){
        //Do what ever you need here.... For example:  
        Console.WriteLine(o.ToString());
    }