正在使用QSettings读取windows上的注册表值
我正在尝试使用QSettings从windows注册表读取MachineGuid项 那把钥匙的地址是 “HKEY\U本地\U计算机\软件\微软\加密技术” 我将QSettings与QSettings::Native标志一起使用,如下所示正在使用QSettings读取windows上的注册表值,windows,qt,registry,qsettings,Windows,Qt,Registry,Qsettings,我正在尝试使用QSettings从windows注册表读取MachineGuid项 那把钥匙的地址是 “HKEY\U本地\U计算机\软件\微软\加密技术” 我将QSettings与QSettings::Native标志一起使用,如下所示 QSettings settings("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography",QSettings::NativeFormat); 我可以从regedit.exe中看到所有子文件夹及其键和M
QSettings settings("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography",QSettings::NativeFormat);
我可以从regedit.exe中看到所有子文件夹及其键和MachineGuid的值,但是QSettings的value功能似乎工作不正常
settings.childKeys();
结果如下:
settings.value("MachineGuid").toString();
返回空的QString
settings.childGroups();
正确返回加密文件夹的所有子文件夹
settings.childKeys();
返回一个空的QStringList
settings.allKeys();
返回Cryptography文件夹中的所有密钥,包括除放置在Cryptography中的MachineGuid
之外的所有子文件夹中的密钥
我使用的是在Windows10上使用VisualStudio2015静态构建的Qt5.7.1
我尝试过使用Window.h头的代码,并成功地提取了值,但这种方法的问题是我必须向发布的软件中添加大量DLL。对于使用32位编译代码访问64位Windows操作系统,正确的格式应该是“
Registry64Format
”如果从64位编译器访问32位操作系统,正确的格式是“Registry32Format
”
因此,在我的例子中,将format设置为64位之后,就可以提取密钥了
使用32位编译代码在64位操作系统上读取键“MachineGuid”
QSettings settings("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography",
QSettings::Registry64Format);
auto key = settings.childKeys().at(0);
嘿,Mohammad,谢谢你的回答,但我想你必须亲眼看看,如果你点击MachineGuid上的加密,它就会出现在你的regedit的右侧,而不是一个组。问题是,密码术包含一个密钥和一组组组作为密钥children@mostafaTmj不,我的系统里没有钥匙哦。。。我以为每个windows机器都有这里提到的那把钥匙,这里是另一个机器油的例子,末尾有一张图片哦,对不起,我现在可以看到了!但我知道问题所在!