在perl中计算私有工作集内存

时间:2014-07-22 23:26:30

标签: perl wmi wmi-query win32ole

我基本上试图在perl中查询进程的私有工作集 I have already refereed this post. 该解决方案在win8 / 8.1上运行良好,但由于某种原因,以下行在win7x64上没有返回任何内容,并且我尝试使用IDProcess而不是Name,它仍然不返回任何进程。

my $proc = $objWMI->ExecQuery("select * from Win32_Process where Name=\'notepad\'");

$objWMI = Win32::OLE->GetObject('winmgmts:\\\\.\\root\\cimv2');
$proc= $objWMI->ExecQuery("select * from Win32_PerfRawData_PerfProc_Process where Name=\'notepad\'");
foreach my $process (in($proc))
{
  print "abc";
  $out = $process->{WorkingSetPrivate};
}

所以这件事不起作用。 在perl中查询进程的私有工作集大小有什么不同的方法吗?

1 个答案:

答案 0 :(得分:1)

似乎在Windows 7 64位上性能计数器已损坏。我终于成立了这篇文章Corrupt Performance Counter

所以我以管理员身份启动了cmd并执行了lodctr / R(这基本上重置了你的性能计数器)。在此之后,我终于能够得到这个过程,以下代码完美无缺:)

my $proc = $objWMI->ExecQuery("select * from Win32_PerfRawData_PerfProc_Process where Name=\'notepad\'");