Я немного углубился в это. RegGetValue () - это новый вызов реестра, который заботится о некоторой скрытности традиционного способа запроса реестра (RegQueryValueEx). Здесь есть хорошая информация о разнице: http://blogs.msdn.com/larryosterman/archive/2006/01/12/512115.aspx
Если вам нужна обратная совместимость, RegGetValue () не будет работать, поэтому вы должны использовать RegQueryValueEx для чтения данных из реестра.
А теперь вернемся к тому, что я думаю:
- Что вы получаете, когда используете RegQueryValueEx ()?
- Откуда вы знаете, что значения, хранящиеся в реестре, находятся в кодировке utf-8? Хранится ли он в виде байтового массива в реестре или как REG_SZ?
- Вы смотрели на значение с помощью regedit? Что ты видишь?
Так что если вопрос заключается в том, как преобразовать строку в кодировке UTF-8 в строку с нулем в конце ascii, то вам, вероятно, следует изменить заголовок вашего вопроса. Для справки я нашел эту библиотеку, которая может быть полезна:
http://utfcpp.sourceforge.net
Когда я попробовал ссылку несколько минут назад, время ожидания сервера истекло - возможно, продолжается обслуживание SF.
Но я бы посоветовал вам убедиться, что значения в реестре уже не сохраняются как записи REG_SZ.