Разделы реестра, которые вы упомянули, ничего не делают, кроме как сопоставляют некоторые кодовые страницы с CP1251 (кириллицей), эффективно заставляя CP1251 использоваться во всей системе.Так что на самом деле программа, о которой вы упоминаете, содержит некоторую информацию, жестко запрограммированную.
К сожалению, вы не дали нам много информации о том, что является вашей реальной проблемой, поэтому я предполагаю, что вам нужно либо правильно отобразить 1) Локализованный пользовательский интерфейс, либо2) вы хотите разрешить ввод кириллических символов.
Давайте кратко поговорим о проблемах:
Если вы просто не можете правильно отображать локализованные тексты, а приложение написано с использованием MFC, возможно, что шрифт для диалогов установлен неправильно (для MS Shell Dlg или MS Shell Dlg 2, что бы ни работало в этом случае).
В последнем случае и, возможно, в первомКроме того, приложение предполагает, что английский-американский язык является языком, который вы будете использовать, и языком системы будет En-US, эффективно устанавливая Locale на 1033 и кодовую страницу по умолчанию на CP1252.Это может быть где-то жестко закодировано.В таком случае вам нужно будет изменить исходный код (при условии, что у вас есть к нему доступ), чтобы эти свойства исходили из настроек ОС.
Для определения языка следует использовать:
LCID currentLocale = GetUserDefaultLCID();
И для обнаружения текущей (так называемой ANSI) кодовой страницы:
UINT currentCodePage = GetACP();