【问题标题】:Using ManagementObject to retrieve a single WMI property使用 ManagementObject 检索单个 WMI 属性
【发布时间】:2010-04-27 20:42:18
【问题描述】:

这可能不是最好的方法,但我目前正在使用以下方法检索机器上的 RAM 量:

manageObjSearch.Query = new ObjectQuery("SELECT TotalVisibleMemorySize FROM Win32_OperatingSystem");
manageObjCol = manageObjSearch.Get();

foreach (ManagementObject mo in manageObjCol)
 sizeInKilobytes = Convert.ToInt64(mo["TotalVisibleMemorySize"]);

它工作得很好,但我觉得我可以更直接地这样做,而不需要对单个元素进行 foreach,但我不知道如何索引 ManagementObjectCollection

我想要做这样的事情:

ManagementObject mo = new ManagementObject("Win32_OperatingSystem.TotalVisibleMemorySize")
mo.Get();

Console.WriteLine(mo["TotalVisibleMemorySize"].ToString())

或者甚至是类似的东西

ManagementClass mc = new ManagementClass("Win32_OperatingSystem");
Console.WriteLine(mc.GetPropertyValue("TotalVisibleMemorySize").ToString());

我似乎无法弄清楚。有什么想法吗?

【问题讨论】:

    标签: c# winapi wmi


    【解决方案1】:

    foreach 语句隐藏了您需要访问的枚举数。你可以直接这样做:

            var enu = manageObjSearch.Get().GetEnumerator();
            if (!enu.MoveNext()) throw new Exception("Unexpected WMI query failure");
            long sizeInKilobytes = Convert.ToInt64(enu.Current["TotalVisibleMemorySize"]);
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 2019-06-28
    • 2018-09-28
    • 1970-01-01
    • 2010-12-30
    相关资源
    最近更新 更多