Может ли lpSubKey RegGetValue быть не прямым потомком? - PullRequest
0 голосов
/ 13 февраля 2012

Требуется ли для Windows API RegGetValue прямой потомок для параметра lpSubKey?

Будет ли это работать?

RegGetValue(HKEY_LOCAL_MACHINE,
            L"Software\\Microsoft\\Windows NT\\CurrentVersion", L"ProductName",
            RRF_RT_REG_SZ, NULL, outdata, &outdata_size);

Редактировать: У меня косая черта \\, и Windows не нравится! Также преобразует строки UTF-8 в широкие строки UTF-16 (в стиле Windows).

1 Ответ

0 голосов
/ 13 февраля 2012

Требуется ли для Windows API RegGetValue прямой потомок для параметра lpSubKey?

Нет, не требуется.
Вы можете указать путь, как вы показали.Вам также не нужен ведущий разделитель пути (\\).

Но показанный вами код может работать или не работать.Не потому, что он указывает путь к строке, а потому, что вы, вероятно, смешиваете строки Unicode и ANSI.Исходя из вашего имени пользователя (unixman), я предполагаю, что вы относительно плохо знакомы с программированием Windows, поэтому стоит отметить, что приложения Windows полностью Unicode и работают уже более десяти лет.Поэтому вы всегда должны компилировать свой код как Unicode и префиксные строковые литералы с L (для обозначения широкой строки или Unicode, строки).

Аналогично, убедитесь, что outdata объявлен как массив wchar_t.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...