Qt获取注册表项

Qt get registry key

本文关键字:注册表 获取 Qt      更新时间:2023-10-16

我试过

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"的提示框。为什么我打不开注册表项?我认为LPCWSTR("HARDWARE\DEVICEMAP\SERIALCOMM")不是一个好主意。

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

如果你的软件是关于读取和写入串行端口,你可以看看QtSerialPort模块

我个人会这样使用QSettings来完成这个任务:

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

这可能不是正确的语义,但你明白的意思。您可以在官方文档中阅读更多详细信息。