为Win32_OperatingSystem类创建新对象时出现“无效的类”错误

时间:2015-02-27 20:10:35

标签: c# wmi

我目前正在开发一些代码,需要从Win32_OperatingSystem类中获取一些属性,并且有一些代码如下所示:

var managmentObject = new System.Management.ManagementObject("Win32_OperatingSystem.Name='TotalVirtualMemorySize'");
var memory = (ulong) managmentObject["TotalVirtualMemorySize"]*1024ul;

此代码与this answer中提供的示例大致相同,但是当我运行它时,我收到了一个带有“Invalid class”消息的System.Managment.ManagmentException。有什么想法可能会发生什么?

2 个答案:

答案 0 :(得分:1)

使用"Win32_OperatingSystem=@"获取Win32_OperatingSystem类的当前实例。 @表示一个对象是单例,在"备注"中的MSDN文档的底部提到了它。部分。

有关WMI中路径的信息,请阅读Describing an Instance Object Path

答案 1 :(得分:0)

当你死寂说并且还提到here时,Win32_OperatingSystemsingleton class。要获取单个实例,请使用“@”作为密钥。

var managmentObject = new ManagementObject("Win32_OperatingSystem=@");
var memory = (ulong)managmentObject["TotalVirtualMemorySize"] * 1024ul;