Получение информации о описании процесса
Я пытаюсь получить информацию о процессе, и я знаю, что могу использовать:
Process[] myProcesses = Process.GetProcesses();
но как получить описание процесса? Это через какой-то вызов Win32 API? Я запускаю Vista, и когда я нажимаю на вкладке "Процессы" в "Диспетчере задач", я вижу описание.
Ответы
Ответ 1
То, что вы видите в Диспетчере задач, фактически является полем описания исполняемого образа.
Вы можете использовать вызовы GetFileVersionInfo()
и VerQueryValue()
WinAPI для доступа к различной информации о версии, например. CompanyName или FileDescription.
Для .Net-пути используйте член FileDescription
FileVersionInfo
, созданный с помощью исполняемого имени, полученного через Process.MainModule.FileName
.
Другой способ - через Assembly
. Загрузите сборку из исполняемого изображения, затем запросите пользовательский атрибут AssemblyDescriptionAttribute
.
Ответ 2
Вам просто нужно пойти немного дальше по свойствам.
Предположим, что у вас есть экземпляр блокнота.
Process[] proc = Process.GetProcessesByName("notepad");
Console.WriteLine("Process version- " + proc[0].MainModule.FileVersionInfo.FileVersion);
Console.WriteLine("Process description- " + proc[0].MainModule.FileVersionInfo.FileDescription);
Там вы идете!
Ответ 3
Это единственный способ, которым я мог это сделать. Я попробовал Process и 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();
}
}
}
Ответ 4
public static string findProcDesc(int Pid)
{
//try
//{
Process proc = Process.GetProcessById(Pid);
String process_description = proc.MainModule.FileVersionInfo.FileDescription;
return process_description;
//} catch() {
//}
}
Уловка будет возвращать "Доступ запрещен". Как мы могли это сделать, не дав разрешения на это?