Qt получить ключ реестра

Я пытался

QMessageBox msgBox;
HKEY regKey;
WCHAR regKeyName;
DWORD lpcValueName = MAX_PATH;
LONG err = RegOpenKeyEx(HKEY_LOCAL_MACHINE, LPCWSTR("HARDWARE\\DEVICEMAP\\SERIALCOMM"), 0, KEY_QUERY_VALUE | KEY_READ | KEY_WOW64_64KEY, &regKey);
if (err == 0)
{
msgBox.setText("success " + QString::number(err));
} else
{
msgBox.setText("error " + QString::number(err));
};
msgBox.exec();

и приложение всегда показывает мне «ошибку 2» msgbox. Почему я не могу открыть ключ реестра?
Я думаю LPCWSTR("HARDWARE\\DEVICEMAP\\SERIALCOMM") это не отличная идея.

2

Решение

Прежде всего вы можете использовать QSettings для чтения и записи в реестр.
Во-вторых, DEVICEMAP, вероятно, доступен только для чтения и защищен. Чтобы проверить, откройте редактор реестра (regedit) и посмотрите, можете ли вы изменить значения там вручную.

Если ваше программное обеспечение предназначено для чтения и записи через последовательные порты, вы можете взглянуть на модуль QtSerialPort.

3

Другие решения

Я бы лично использовал QSettings для этой задачи примерно так:

QSettings settings("HARDWARE\\DEVICEMAP\\SERIALCOMM", QSettings::NativeFormat);
qDebug() << settings.value("Default", "0").toString();

Вероятно, это не правильная семантика, но вы поняли идею. Вы можете прочитать больше на детали в официальной документации.

3

По вопросам рекламы [email protected]