Мне нужно написать программу в С# для сбора информации о процессах, запущенных на моем компьютере. Я успешно получаю имена процессов и идентификаторы с помощью этого кода:
... Process [] processlist; ... foreach (обрабатывать процесс в списке процессов) { Console.WriteLine(theprocess.ProcessName +...) } ...
Но я не смог получить версию процессов (например, Firefox или Visual Studio). кто-нибудь знает, как получить версию запущенного процесса? спасибо большое!
theProcess.MainModule.FileVersionInfo. Но есть одно или два исключения, которые вам нужно поймать.
Имейте в виду, что исполняемые файлы 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. В зависимости от того, для чего вы используете эту информацию, это может быть или не быть проблемой.
Вы можете получить имя исполняемого файла из файла Process.StartInfo.FileName. Получите новый экземпляр FileVersionInfo, используя имя файла:
FileVersionInfo myFileVersionInfo = FileVersionInfo.GetVersionInfo(Process.StartInfo.FileName);
Затем перейдите в myFileVersionInfo.FileVersion, чтобы получить версию файла.
РЕДАКТИРОВАТЬ: Даниэль кажется более эффективным; Я не знал, что вы можете просто получить доступ к загруженному модулю FileVersionInfo напрямую.