我正在查询基于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是什么原因?
它可能是相关机器特有的,可能与操作系统版本无关。我也尝试过使用和不使用提升权限的相同结果。
答案 0 :(得分:1)
WMI提供程序可能正在读取\PagingFile\% Usage计数器使用的相同统计数据存储。
请尝试使用PdhOpenQuery / PdhAddCounter / PdhCollectQueryData。
答案 1 :(得分:0)
事实证明的值为零。此特定实例中的托管提供程序将所有分页内存设置为0 MB。因此,通过WMI返回的数据确实是正确的。