2012-01-16 2 views
0

프로세스 정보를 가져 와서 SQL 테이블에 넣는 응용 프로그램을 만들려고합니다.C# 작업 관리자 CPU 사용 문제

프로세스 이름, PID, CPU 시간, 메모리 사용량, 페이지 및 핸들을 당깁니다.

CPU 시간을 제외한 모든 항목이 정상적으로 작동합니다. 여기가 CPU 정보를 얻기 위해 사용하고있는 코드는 다음과 같습니다

나는이 오류가 무엇입니까 그러나
Process[] processes = Process.GetProcesses(machineName); 

foreach (Process p in processes) 
{ 
    var cpuTime = p.TotalProcessorTime; 
} 

:

기능은 원격 시스템에 대해 지원되지 않습니다.

다른 사람이이 정보를 얻을 수 있고 여전히 내 SQL 테이블에 추가 할 수있는 방법이 있습니까?

+0

나는 그것에 대한 성능 카운터가 있다고 생각합니다. –

+0

성능 카운터를 모두 변경해야합니까 아니면 그냥 SQL으로 가져올 수 있습니까? – Matt

+1

아마 모든 성능 카운터에 직접 액세스 할 수 있지만 어느 쪽이든 작동해야합니다. –

답변

3

WMI 사용은 어떻습니까?

string computerName="MyPc"; 
    System.Management.ManagementScope ms = new System.Management.ManagementScope(@"\\" + computerName + @"\root\cimv2"); 
    System.Management.SelectQuery sq = new System.Management.SelectQuery("SELECT * FROM Win32_Process"); 
    System.Management.ManagementObjectSearcher mos = new System.Management.ManagementObjectSearcher(ms,sq); 
    foreach (System.Management.ManagementObject mo in mos.Get()) 
    { 
    Console.WriteLine(mo["Name"].ToString()); 
    } 
    Console.Read(); 
+0

내가 사용하기 시작한 것이지만 쉽게 알지 못합니다. 방법은 CPU를 계산합니다. 커널 시간과 사용자 시간을 가져와 수학을한다면 CPU 시간을 얻을 수 있다고 말하는 사이트를 발견했습니다. 이것을 성취하기위한 더 쉬운 방법이 있어야합니다. – Matt