Не удается прочитать FileVersionInfo с несоответствием кодовой страницы
У меня есть некоторый разумно опробованный и протестированный код, который использует вызовы API Windows для чтения строк FileVersionInfo, например «FileVersion» и «CompanyName».
Я обнаружил, что это не удалось с одной конкретной сторонней DLL. Проблема, кажется, заключается в следующем:
Чтение\VarFileInfo\Translation
ценность, я получаю040904B0
(Американский английский, Unicode). Но когда я тогда пытаюсь позвонитьVerQueryValue
на\StringFileInfo\040904B0\CompanyName
, он возвращает ложь.
Но настройка кода для использования кодовой страницы ANSI Windows Latin-1 работает:\StringFileInfo\040904E4\CompanyName
.
Таким образом, кодовая страница в таблице строк не соответствует\VarFileInfo\Translation
значение.
В соответствии с примером ресурса в нижней части MSDNVERSIONINFO ресурс документация, это уместно!
Учитывая это, могу ли я использовать опубликованные API-интерфейсы VersionInfo для правильного чтения строк этого файла, не «угадывая» кодовую страницу?