Windows: получение версии запущенного процесса - PullRequest
2 голосов
/ 09 марта 2011

Я хочу получить обзор всех используемых программ и сколько версий этого программного обеспечения используется.Мне не нужно знать точный номер версии (хотя это было бы неплохо), просто могу сказать, что две вещи - это разные версии (или сборки).

Поскольку я ничего не знаю о каждой программе,Мне нужно, чтобы это было сделано в общем виде.Как это можно сделать?

1 Ответ

5 голосов
/ 09 марта 2011

Это довольно общий вопрос, поэтому я дам вам общий ответ.Вам нужно будет сделать следующее:

  • Перечислить все процессы, вызвав EnumProcesses().
  • Для каждого идентификатора процесса OpenProcess() для получения дескриптора процесса.
  • Для каждого дескриптора процесса вызовите GetModuleFileNameEx(), чтобы получить имя основного исполняемого файла процесса.
  • Наконец, вызовите GetFileVersionInfo() и, возможно, некоторые из его друзей, чтобы получить информацию.

Это даст вам информацию о бинарной версии, а не о маркетинговых версиях.Например, Windows XP - это версия 5.1, Windows Vista - это 6.0, Windows 7 - это версия 6.1.Если вам нужны маркетинговые версии, то это, вероятно, недостижимо в общих чертах.

...