В нашем приложении мы используем API-вызов VerQueryValue () для получения информации о версии, такой как ProductName и т. Д. Для некоторых приложений, работающих на компьютере на традиционном китайском языке (кодовая страница 950), ProductName имеет последовательности Unicode, которые охватывают несколько кодовых страниц некоторые символы не переведены должным образом. Например, в приведенной ниже последовательности
51 00 51 00 6F 8F F6 4E A1 7B 06 74
Некоторые символы возвращаются как недействительные Unicode 0x003f (знак вопроса)
В приведенной выше последовательности Unicode '8F 6F' не воспринимается и не конвертируется должным образом при вызове WinAPI и просто заполняется недопустимым Unicode '00 3F '- поскольку' 8F 6F 'присутствует только в кодовой странице 936 ( т.е. упрощенный китайский)
.exe содержит только одну таблицу перевода - как '\ StringFileInfo \ 080404B0' - которая ссылается на идентификатор языка '804' только для традиционного китайского *
Как следует обращаться с такими случаями - когда ProductName относится к Unicode как из 936, так и из 950, даже если в таблице перевода есть только одна запись? Есть ли другой вызов API для использования?
Кроме того, если бы я щелкнул правой кнопкой мыши на exe и просмотрел вкладку «детали», он правильно показывает название продукта! Так что, похоже, Microsoft использует другой вызов API или как-то
справиться с этим правильно. Мне нужно знать, как это так.
Заранее спасибо,
Venkat