【问题标题】:ManagementObject Class not showing up in System.Management namespaceManagementObject 类未显示在 System.Management 命名空间中
【发布时间】:2011-05-17 21:50:21
【问题描述】:

我正在尝试在我的 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:\"");

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    右键点击右侧的References,手动添加System.Management。即使我将它包含在 using 语句中,我仍然必须这样做。一旦我这样做了,一切都很好。

    【讨论】:

    • 当我们直接告诉它using System.Management;时,为什么Visual Studio不自动包含引用? :(
    • 这是正确的行为。奇怪的是,即使没有添加引用,它也能识别System.Management
    • 这是一个错误还是必须这样?我以为是因为我使用的是 .net4.0
    • 请注意,如果您将 csproj 设置为只读(例如使用 Perforce),Visual Studio 中的参考列表会显示它在其中,但实际上不会添加!执行此操作后仍会出现此错误。
    • 对于找不到它的其他人,一旦在“参考管理器”中,展开“程序集”并转到“框架”。虽然对我来说,它已经被勾选了,但仍然不能在任何不是开发机器的机器上工作。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          ~ 只需使用 nuget 管理器添加 System.management, 它对我有用! c#

          【讨论】:

            【解决方案6】:

            我认为问题在于Win32_LogicalDisk.DeviceID=\"C:\" 没有 WMI 对象。 尝试替换:

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

            与:

            ManagementObject disk = new ManagementObject("Win32_LogicalDisk");
            

            然后逐步遍历每个字段:

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

            【讨论】:

              【解决方案7】:

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

              更多详情请查看Namespace not recognized (even though it is there)

              【讨论】:

              • 我查看了链接并检查了我的目标框架。它是.NET 3.5
              【解决方案8】:

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

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

              【讨论】:

                猜你喜欢
                • 2010-12-20
                • 2014-04-09
                • 2021-09-12
                • 1970-01-01
                • 2014-09-09
                • 1970-01-01
                • 2014-12-08
                • 2016-06-24
                • 1970-01-01
                相关资源
                最近更新 更多