2012-05-13 3 views
0

WMI 쿼리를 사용하여 모든 프로세스 목록을 가져 오지만, 누락 된 것은 프로세스 설명입니다! "설명"속성을 사용할 때 이렇게 표시됩니다!WMI를 사용하여 프로세스 설명을 얻는 방법은 무엇입니까?

Name : chrome.exe   Description : chrome.exe 

있지만

Name : chrome.exe   Description : Google Chrome 

해야한다 그래서 공정에 대한 설명을 반환 속성 이름은 무엇인가?

public void GetProcesses() 
{ 
    ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_Process"); 
    ManagementObjectCollection processList = searcher.Get(); 
    foreach (ManagementObject obj in processList) 
    { 
     Console.WriteLine("Name : {0}  Description : {1}",obj["Name"],obj["Description"]); 
    } 
} 

답변

0

WMI가 아니지만 로컬 컴퓨터의 프로세스에서 작동합니다.

프로세스의 설명을 찾을 수 있습니다. 실제로는 실행 파일에 대한 설명으로 을 사용합니다. FileDescription 및 ProductName properties을 확인하십시오.

그러나이 정보를 사용할 수 있다고 보장 할 수는 없습니다. 그럼에도 불구하고 그것은 아마도 최선의 방법 일 것입니다. sysinternals 프로세스 탐색기와 같은 다른 도구도 해당 정보를 표시합니다.

+0

글쎄요, WCF를 사용하여 클라이언트가 루프에서 hostPC 프로세스 [ID, Name, Desc, WorkingSet]를 얻습니다. 매번 새로운 GetVersionInfo를 선언하는 것이 좋은 생각입니까? –

+0

프로세스/실행 파일별로 호출해야합니다. 하지만 값은 변경되지 않습니다. 즉, WorkingSet에 대한 업데이트 된 값을 확실히 반환하려는 경우 버전 정보에 대해 캐시 할 필요가 없습니다. 캐시 할 수 있습니다. 그것이 실제로 문제의 가치가 있는지 여부는 단지 매번 호출하는 것과 비교할 때 조금 어렵습니다. 몇 가지 측정을해야하고 클라이언트가 서버를 호출하는 빈도에 따라 달라집니다 (따라서 실행 파일 당 GetVersionInfo를 호출합니다). –

+0

출구를 찾았습니다. 목록을 가져올 때 한 번 호출합니다. 프로세스, 나는 새로운 프로세스가 시작되거나 닫힌 경우에만 업데이트합니다. 도움을 주셔서 감사합니다. –

0

귀하는 모든 속성이 Win32_Process class documentation입니다. 당신이 운이 좋지 않은 것 같아요, wbemtest을 사용하여 내 컴퓨터의 일부 프로세스를 테스트하면 필요한 속성이 표시되지 않습니다. 프로세스가 그러한 정보를 노출하지 않을 수도 있습니다.

+0

실제로 WMI를 사용하기 전에 'System'을 사용하여 설명을 가져올 수있었습니다. 진단'및 Windows 작업 관리자에서 또한 설명을 보여줍니다 !! –

+0

과정이 로컬 인 경우 Christian.K의 제안이 있습니다. 나는 WMI 때문에 우리가 지역에 대해 말하지 않고 있다고 가정하고있었습니다. 로컬 프로세스의 경우 System.Diagnostics.Process를 사용하는 것이 훨씬 더 의미가 있습니다. http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx –

+0

메신저는 클라이언트 - 서버 응용 프로그램에서' System.Diagnostics.Process'가 더 빨라질 수도 있지만 전체 프로세스를 반환하지는 않습니다. 관리자 권한으로 실행해야만 대부분의 프로세스를 실행할 수 있으며, 어떤 컴퓨터에서도 작동 할 수있는 두 가지 버전 (x86, x64) 그래서 나는 WMI를 선호한다. 불행히도 항상 빠진 것이 있습니다. –

관련 문제