Я пытался
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, ®Key);
if (err == 0)
{
msgBox.setText("success " + QString::number(err));
} else
{
msgBox.setText("error " + QString::number(err));
};
msgBox.exec();
и приложение всегда показывает мне «ошибку 2» msgbox. Почему я не могу открыть ключ реестра?
Я думаю LPCWSTR("HARDWARE\\DEVICEMAP\\SERIALCOMM")
это не отличная идея.
Прежде всего вы можете использовать QSettings для чтения и записи в реестр.
Во-вторых, DEVICEMAP, вероятно, доступен только для чтения и защищен. Чтобы проверить, откройте редактор реестра (regedit) и посмотрите, можете ли вы изменить значения там вручную.
Если ваше программное обеспечение предназначено для чтения и записи через последовательные порты, вы можете взглянуть на модуль QtSerialPort.
Я бы лично использовал QSettings для этой задачи примерно так:
QSettings settings("HARDWARE\\DEVICEMAP\\SERIALCOMM", QSettings::NativeFormat);
qDebug() << settings.value("Default", "0").toString();
Вероятно, это не правильная семантика, но вы поняли идею. Вы можете прочитать больше на детали в официальной документации.