2009-07-28 4 views
10

나는 프로세스 정보를 검색하려고하고 내가 사용할 수있는 알고 있어요 :을 찾는 중 프로세스 설명 정보

Process[] myProcesses = Process.GetProcesses(); 

을하지만 어떻게 내가 프로세스 설명을 검색합니까? 그것은 어떤 Win32 API 호출을 통해인가? 저는 Vista를 실행 중이며 작업 관리자의 프로세스 탭 아래를 클릭하면 설명을 볼 수 있습니다.

답변

11

작업 관리자에 표시되는 내용은 실제로 실행 가능 이미지의 설명 필드입니다.

WinAPI 호출 GetFileVersionInfo()VerQueryValue()을 사용하여 다양한 버전 정보에 액세스 할 수 있습니다. CompanyName 또는 FileDescription.

.Net 방식의 경우 FileDescription 구성원을 FileVersionInfo으로하고 Process.MainModule.FileName을 통해 얻은 실행 파일 이름으로 인스턴스화하십시오.

또 다른 방법은 Assembly입니다. 실행 가능 이미지에서 어셈블리를로드 한 다음 AssemblyDescriptionAttribute 사용자 지정 특성을 쿼리합니다.

1

이것이 내가 할 수있는 유일한 방법입니다. 나는 프로세스와 Win32_Process를 시도했지만 아무 것도하지 않았다.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Management; 
using System.Diagnostics; 

namespace Management 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var ps = Process.GetProcesses(); 

      foreach (var p in ps) 
      { 
       try 
       { 
        var desc = FileVersionInfo.GetVersionInfo(p.MainModule.FileName); 
        Console.WriteLine(desc.FileDescription); 
       } 
       catch 
       { 
        Console.WriteLine("Access Denied"); 
       } 
      } 

      Console.ReadLine(); 
     } 
    } 
} 
10

속성을 조금만 더 가면됩니다. 메모장 실행 인스턴스가 있다고 가정하십시오.

Process[] proc = Process.GetProcessesByName("notepad"); 
Console.WriteLine("Process version- " + proc[0].MainModule.FileVersionInfo.FileVersion); 
Console.WriteLine("Process description- " + proc[0].MainModule.FileVersionInfo.FileDescription); 

저기!

관련 문제