Нет гарантии, что вы найдете информацию о версии программы в реестре.Я использую ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\programname
, чтобы найти полный путь, но это все еще зависит от программы установки / установки, чтобы установить это значение.Если было достаточно хорошо использовать это соглашение, вы можете использовать полный путь для вызова GetFileVersionInfo(...)
.
. Разработчик должен заполнить полезную информацию о ресурсах, такую как версия, название компании, описание, авторские права,и т.д. ... Вы можете сказать, что некоторые программы имеют старые заполнители по умолчанию "To Do" в ресурсе.Другие, даже Microsoft, забудут включить название компании в ресурс для таких программ, как Dumprep.Другие Exe, созданные без Visual Studio, не удосуживаются включать любой сегмент ресурса, к которому может получить доступ GetFileVersionInfo()
.
В конце концов, я нашел эту функцию наиболее надежной.Также обратите внимание, прежде чем звонить GetFileVersionInfo()
, убедитесь, что вы звоните GetFileVersionSize()
.Если это x64 версия Windows, в некоторых случаях вам может потребоваться вызвать Wow64DisableWow64FsRedirection(...)
& Wow64RevertWow64FsRedirection(...)
или использовать SysNative, если программа, которую вы просматриваете, находится в системной папке, которая перенаправлена.