代码之家  ›  专栏  ›  技术社区  ›  rjzii

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

  •  0
  • rjzii  · 技术社区  · 10 年前

    我目前正在编写一些代码,需要从 Win32_OperatingSystem 类,并具有如下代码:

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

    此代码与中提供的示例大致相同 this answer ,但我运行时收到了一个System.Management.ManagementException,消息为“Invalid class”。有什么想法吗?

    2 回复  |  直到 8 年前
        1
  •  1
  •   rjzii    10 年前

    使用 "Win32_OperatingSystem=@" 获取 Win32_OperatingSystem @ 表示对象是单例的,这在MSDN文档的“备注”部分的底部提到。

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

        2
  •  0
  •   Vinkal    10 年前

    正如Yoh Deadfall所说,也提到了 here , Win32_OperatingSystem 是一个 singleton class 。若要获取单个实例,请使用“@”作为键。

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