Windows: получение версии запущенного процесса
Я хочу получить обзор всех программ, которые используются и сколько версий этого программного обеспечения, которое используется. Мне не нужно знать точный номер версии (хотя это было бы неплохо), просто могу сказать, что две вещи являются разными версиями (или сборками).
Поскольку я ничего не знаю о каждой программе, мне нужно сделать это общим способом. Как это можно сделать?
1 ответ
Решение
Это довольно общий вопрос, поэтому я дам вам общий ответ. Вам нужно будет сделать следующее:
- Перечислите все процессы, вызвав
EnumProcesses()
, - Для каждого идентификатора процесса
OpenProcess()
получить дескриптор процесса. - С каждым вызовом дескриптора процесса
GetModuleFileNameEx()
чтобы получить имя основного исполняемого файла процесса. - Наконец позвони
GetFileVersionInfo()
и, возможно, некоторые из его друзей, чтобы получить информацию.
Это даст вам информацию о бинарной версии, а не о маркетинговых версиях. Например, Windows XP версии 5.1, Windows Vista 6.0, Windows 7 версии 6.1. Если вам нужны маркетинговые версии, то это, вероятно, недостижимо в общем смысле.