Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt获取注册表项_C++_Qt_Registry_Qtcore_Qsettings - Fatal编程技术网

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, &regKey); 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, &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”)
不是一个好主意。

首先,您可以使用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?