1

我一直在尝试将 WMI 用于我的代码,我无法使用 System.Management 类,因为它们不存在。我已经在 3.5 和 4 Net 上试过了。没有任何效果。我还没有找到任何解决这个问题的方法,想知道你们中是否有人遇到过这个问题?如果是这样,为什么我只有:

System.Management.Instrumentation

我的using块如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Management;
using System.IO;
using System.Security.Permissions;
using Microsoft.Win32;
using System.Collections;
using System.Management.Instrumentation;

信息:

Visual Studio 2010 Ultimate 使用 net 3.5 - Net 4。

不知道我在这里缺少什么。

4

5 回答 5

4

System.Management.Instrumentation不是一个,它是一个命名空间。鉴于您拥有的 using 指令,如果您有对 System.Management.dll 的引用,您应该能够编写如下代码:

ObjectQuery query = new ObjectQuery("...");
于 2011-10-01T18:37:04.997 回答
1

您是否添加了对 System.Management 的引用?还要确保您所针对的框架版本不是客户端配置文件。

于 2011-10-01T18:35:03.847 回答
1

MSDN 在System.Management.Instrumentation命名空间下列出了相当多的类:

DefaultManagementInstaller 类
DefaultManagementProjectInstaller 类
事件接口
IgnoreMemberAttribute 类
实例接口
实例类
InstanceNotFoundException 类
仪表类
InstrumentationBaseException 类
InstrumentationClassAttribute 类
InstrumentationException 类
InstrumentationManager 类
InstrumentationType 枚举
InstrumentedAttribute 类
ManagedCommonProvider 类
ManagedNameAttribute 类
ManagementBindAttribute 类
ManagementCommitAttribute 类
ManagementConfigurationAttribute 类
管理配置类型枚举
ManagementCreateAttribute 类
ManagementEntityAttribute 类
ManagementEnumeratorAttribute 类
ManagementHostingModel 枚举
ManagementInstaller 类
ManagementKeyAttribute 类
ManagementMemberAttribute 类
管理名称属性类
ManagementNewInstanceAttribute 类
ManagementProbeAttribute 类
管理限定符属性类
ManagementQualifierFlavors 枚举
管理参考属性类
ManagementRemoveAttribute 类
管理任务属性类
WmiConfigurationAttribute 类
WmiProviderInstallationException 类

这些存在System.Management.dll- 确保添加对它的引用。

于 2011-10-01T18:36:01.797 回答
1

我相信您需要添加对 System.Management.*.dll 文件的引用。

如果你像我一样来自 C++ 背景,我猜你有同样的概念问题,当我认为在 C# 中使用语句类似于在 C/C++ 中包含语句时。这是一个微妙的差异,但它让我多年来一直非常轻微的困惑,当我几年前拿到反光板时终于澄清了......

于 2011-10-01T18:36:34.830 回答
0

右键单击项目的 References 文件夹,然后选择 Add Reference... 并从 .NET 选项卡中选择 System.Management.dll。(您可能需要稍等片刻才能显示 DLL,此列表是延迟加载的。)

此外,请确保在项目属性中您没有针对 .NET Framework 客户端配置文件:您很可能需要完整的 .NET Framework 4.0。

为什么你不这样做就什么都看到了?令人困惑的是,.NET 库中的程序集命名空间之间不一定存在一对一的关系。

因此,即使您不包含对 System.Management.dll程序集的引用,您仍然会在 System.Management 命名空间中看到一个类——它包含在您已经引用的其他程序集之一中,或者系统核心组件本身。

您可以通过将自己的类添加到 System.Management 命名空间来自己尝试这个技巧:

namespace System.Management
{
   public class MyClass
   {
   }
}

这最终会出现在项目属性中命名的程序集中,但属于namespace System.Management

请注意,打破命名空间名称和程序集名称之间的关系会变得非常混乱,所以不要!

于 2011-10-01T18:55:59.970 回答