我正在尝试在我的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:\"");
答案 0 :(得分:118)
右键单击右侧的“引用”,然后手动添加“System.Management”。即使我将它包含在using语句中,我仍然必须这样做。一旦我做了,一切都很好。
答案 1 :(得分:26)
您是否添加了对System.Management程序集的引用?
答案 2 :(得分:21)
在Solution Explorer中,右键单击References,然后单击Add Reference ...,在Framework下,您应该激活System.Management框架。
答案 3 :(得分:8)
您需要向项目添加对System.Management.dll的引用。
您可以在不添加对System.Management.dll的引用的情况下查看System.Management.Instrumentation,因为它包含在另一个库中(System.Core.dll,它自动包含在参考中),但您无法访问该命名空间包含的其他类型,而不显式添加对System.Management.dll库的引用。
答案 4 :(得分:2)
我认为问题是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());
}
答案 5 :(得分:1)
〜只需使用nuget manager添加System.management, 它对我有用! C#
答案 6 :(得分:0)
确保您的项目未设置为针对.NET 4 Framework Client Profile进行编译。
有关详细信息,请参阅Namespace not recognized (even though it is there)。
答案 7 :(得分:0)
在解决方案资源管理器中,右键单击“引用”,然后单击“添加引用...”,然后在“框架”下激活System.Management框架。
答案 8 :(得分:0)
我拥有的 Visual Studio 版本没有通过导入“System.Management”命名空间来导入 ManagementObjectSearcher。如果您遇到同样的问题,请尝试通过执行以下步骤添加对“System.Management.dll”的引用。