C++ Qt获取注册表项
我试着C++ Qt获取注册表项,c++,qt,registry,qtcore,qsettings,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, ®Key); if (err == 0)
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();
QSettings设置(“HARDWARE\\DEVICEMAP\\SERIALCOMM”,QSettings::NativeFormat);
qDebug()为什么不使用QSettings?