Как я могу узнать версию другого приложения, используя C #

2

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

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

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

Теги:
process
version

3 ответа

10
Лучший ответ

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

2

Имейте в виду, что исполняемые файлы 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. В зависимости от того, для чего вы используете эту информацию, это может быть или не быть проблемой.

1

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню