2014-07-22 4 views
0

기본적으로 perl에서 개인용 작업 세트를 쿼리하려고합니다.
I have already refereed this post. 솔루션은 win8/8.1에서 훌륭하게 작동하지만 다음과 같은 행은 win7x64에서 아무 것도 반환하지 않으며 이름 대신 IDProcess를 사용하여 시도했지만 아무런 프로세스도 반환하지 않습니다.perl에서 개인용 작업 세트 메모리 계산하기

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

Windows 7 64 비트 성능 카운터가 손상된 것 같습니다. 마침내이 게시물을 설립했습니다. Corrupt Performance Counter

저는 관리자로 cmd를 시작했으며 lodctr/R (기본적으로 성능 카운터 재설정)을 수행했습니다. 이 후, 마침내 프로세스를 얻을 수 있었고 다음 코드는 완벽하게 작동했습니다.

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