我试过
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")
并不是一个好主意。
答案 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。