VerQueryValue Версия файла не соответствует оболочке Windows

Я использую InfoVerQueryValue из библиотеки DLL a.

Все работает нормально, за исключением того, что FileVersion, отображаемый проводником (щелкните правой кнопкой мыши файл, «Свойства», «Сведения», «Версия файла»), не соответствует строке, которую я получаю из VerQueryValue.

Все другие мои вызовы VerQueryValue работают нормально, но FileVersion, похоже, извлекает те же данные, что и ProductVersion. Я пробовал два разных компонента «информация о версии», написанных на разных языках (C++ и Delphi), и оба демонстрируют такое поведение, поэтому я не думаю, что это ошибка в моем (или их) коде.

Две возможности, о которых я могу думать:

  • Ошибка в VerQueryValue
  • или оболочка Windows на самом деле отображает что-то другое, кроме строки FileVersion.

Кто-нибудь знает, что это может быть?


person Roddy    schedule 22.01.2009    source источник


Ответы (2)


Установлено ли для параметра lpSubBlock (второй параметр) VerQueryValue правильное значение для региона, в котором вы находитесь? Для английский — Великобритания это будет:

StringFileInfo\080904E4\FileVersion

Эта страница содержит еще несколько идентификаторов языка/набора символов.

person J__    schedule 22.01.2009

Прочитайте это KB160042, я думаю, вы найдете свой ответ.

person fox    schedule 10.11.2010
comment
Добро пожаловать в СО. Ознакомьтесь с часто задаваемыми вопросами, чтобы начать работу. Пожалуйста, не бросайте ссылки. Объясните, на что они указывают и как это содержание отвечает на вопрос. - person pmr; 07.12.2012