2

我尝试过了

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")这不是一个好主意。

4

2 回答 2

3

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

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

于 2014-03-16T09:02:28.830 回答
3

我个人会以如下方式使用 QSettings 来完成此任务:

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

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

于 2014-03-16T09:05:42.027 回答