Win32_PageFileUsage WMI调用为CurrentUsage返回0

时间:2010-06-09 00:20:58

标签: c# .net wmi

我正在查询基于Windows的系统上当前的页面文件使用情况。这是为了在.NET Framework 2.0 SP1上运行,并且已经在Windows Vista,Windows 7,Windows Server 2003 R2和Windows Server 2008上进行了测试(并且可以工作!)。

在Windows Server 2003 SP2(原始版本,而不是R2)上,它似乎返回0:

using (var query = new ManagementObjectSearcher("SELECT CurrentUsage FROM Win32_PageFileUsage"))
{
    foreach (ManagementBaseObject obj in query.Get())
    {
        uint used = (uint)obj.GetPropertyValue("CurrentUsage");
        return used;
    }
}

这只是返回WMI调用返回的第一行的结果。即使正在使用页面文件,它也会返回0.当应该返回更大的值时,结果为0是什么原因?

它可能是相关机器特有的,可能与操作系统版本无关。我也尝试过使用和不使用提升权限的相同结果。

2 个答案:

答案 0 :(得分:1)

WMI提供程序可能正在读取\PagingFile\% Usage计数器使用的相同统计数据存储。

请尝试使用PdhOpenQuery / PdhAddCounter / PdhCollectQueryData。

答案 1 :(得分:0)

事实证明的值为零。此特定实例中的托管提供程序将所有分页内存设置为0 MB。因此,通过WMI返回的数据确实是正确的。