나는 프로세스 정보를 검색하려고하고 내가 사용할 수있는 알고 있어요 :을 찾는 중 프로세스 설명 정보
Process[] myProcesses = Process.GetProcesses();
을하지만 어떻게 내가 프로세스 설명을 검색합니까? 그것은 어떤 Win32 API 호출을 통해인가? 저는 Vista를 실행 중이며 작업 관리자의 프로세스 탭 아래를 클릭하면 설명을 볼 수 있습니다.
나는 프로세스 정보를 검색하려고하고 내가 사용할 수있는 알고 있어요 :을 찾는 중 프로세스 설명 정보
Process[] myProcesses = Process.GetProcesses();
을하지만 어떻게 내가 프로세스 설명을 검색합니까? 그것은 어떤 Win32 API 호출을 통해인가? 저는 Vista를 실행 중이며 작업 관리자의 프로세스 탭 아래를 클릭하면 설명을 볼 수 있습니다.
작업 관리자에 표시되는 내용은 실제로 실행 가능 이미지의 설명 필드입니다.
WinAPI 호출 GetFileVersionInfo()
및 VerQueryValue()
을 사용하여 다양한 버전 정보에 액세스 할 수 있습니다. CompanyName 또는 FileDescription.
.Net 방식의 경우 FileDescription
구성원을 FileVersionInfo
으로하고 Process.MainModule.FileName
을 통해 얻은 실행 파일 이름으로 인스턴스화하십시오.
또 다른 방법은 Assembly
입니다. 실행 가능 이미지에서 어셈블리를로드 한 다음 AssemblyDescriptionAttribute
사용자 지정 특성을 쿼리합니다.
이것이 내가 할 수있는 유일한 방법입니다. 나는 프로세스와 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();
}
}
}
속성을 조금만 더 가면됩니다. 메모장 실행 인스턴스가 있다고 가정하십시오.
Process[] proc = Process.GetProcessesByName("notepad");
Console.WriteLine("Process version- " + proc[0].MainModule.FileVersionInfo.FileVersion);
Console.WriteLine("Process description- " + proc[0].MainModule.FileVersionInfo.FileDescription);
저기!