Qt获取注册表项

时间:2014-03-16 08:42:20

标签: c++ qt registry qtcore qsettings

我试过

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 个答案:

答案 0 :(得分:3)

首先,您可以使用QSettings来读取和写入注册表。 其次,DEVICEMAP可能是只读的并受到保护。要检查,请打开注册表编辑器(regedit),看看是否可以手动更改值。

如果您的软件是关于从串行端口读取和写入的,那么您可以查看QtSerialPort模块。

答案 1 :(得分:3)

我个人会以这样的方式使用QSettings来完成这项任务:

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

这可能不是正确的语义,但你明白了。您可以阅读详细信息in the official documentation