Как я могу узнать версию другого приложения, используя C # - PullRequest
2 голосов
/ 27 октября 2009

Мне нужно написать программу на c # для сбора информации о процессах, запущенных на моем компьютере. Я успешно получаю имена и ID процессов, используя этот код:

... Process [] processlist; ... foreach (обработать процесс в списке процессов) { Console.WriteLine (theprocess.ProcessName + ...) } ...

Но я не смог получить версию процессов (например, Firefox или Visual Studio). Кто-нибудь знает, как получить версию запущенного процесса? Большое спасибо!

Ответы [ 3 ]

10 голосов
/ 27 октября 2009

theProcess.MainModule.FileVersionInfo. Но есть одно или два исключения, которые нужно поймать.

2 голосов
/ 27 октября 2009

Имейте в виду, что FileVersion и / или ProductVersion исполняемого файла не обязательно должны совпадать с версией приложения. Например, Firefox 3.5.3 сообщает о FileVersion 1.9.1.3523, но о ProductVersion 3.5.3. VMware Player 2.5.1, с другой стороны, сообщает FileVersion версии 6.5.1.5078 и ProductVersion версии 6.5.1 build-126130. В зависимости от того, для чего вы используете информацию, это может быть или не быть проблемой.

2 голосов
/ 27 октября 2009

Вы можете получить имя исполняемого файла из Process.StartInfo.FileName. Получите новый экземпляр FileVersionInfo , используя имя файла, подобное этому:

FileVersionInfo myFileVersionInfo = FileVersionInfo.GetVersionInfo(Process.StartInfo.FileName);

Затем получите доступ к myFileVersionInfo.FileVersion, чтобы получить версию файла.

РЕДАКТИРОВАТЬ: путь Даниила кажется более эффективным; Я не знал, что вы можете просто получить доступ к FileVersionInfo загруженного модуля напрямую ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...