Не удается прочитать 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 для правильного чтения строк этого файла, не «угадывая» кодовую страницу?

Ответы на вопрос(1)

Ваш ответ на вопрос