• 1978阅读
  • 4回复

[提问]Qt 读取注册表,读取错误 [复制链接]

上一主题 下一主题
离线tfx181512
 

只看楼主 倒序阅读 楼主  发表于: 2020-06-02
  1. QString strRegPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
  2. QSettings* pSettings = new QSettings(strRegPath, QSettings::NativeFormat);
  3.     
  4. QStringList groupList = pSettings->childGroups();
  5. for each (QString group  in groupList)
  6. {
  7.     pSettings->beginGroup(group);
  8.     QString softwareName = pSettings->value("DisplayName", "").toString();
  9.     
  10.     pSettings->endGroup();
  11. }
  12. delete pSettings;
读取到的值一直是“HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall”下的,我项读取的是“HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall
离线dbzhang800

只看该作者 1楼 发表于: 2020-06-02
你用的是32bit的Qt吧?换成64bit的
离线20091001753

只看该作者 2楼 发表于: 2020-06-07
http://www.qtcn.org/bbs/read-htm-tid-45657.html

如果注册表的值,有斜杠或反斜杠,那么你需要用 WINAPI 来读取。

或者简单来说,读取注册表,你还是直接用 WINAPI 吧。
(づ ̄ 3 ̄)づ
在线fsu0413

只看该作者 3楼 发表于: 2020-06-20
回 20091001753 的帖子
20091001753:http://www.qtcn.org/bbs/read-htm-tid-45657.html
如果注册表的值,有斜杠或反斜杠,那么你需要用 WINAPI 来读取。
或者简单来说,读取注册表,你还是直接用 WINAPI 吧。 (2020-06-07 00:16)

感觉这种的带WOW6432Node的就算用Windows API也一样会被跳转吧。。。。
64位系统下32位程序的处理是在Windows API中耦合的,绕不过去
在线fsu0413

只看该作者 4楼 发表于: 2020-06-20
回 fsu0413 的帖子
fsu0413:感觉这种的带WOW6432Node的就算用Windows API也一样会被跳转吧。。。。
64位系统下32位程序的处理是在Windows API中耦合的,绕不过去
 (2020-06-20 18:39) 

刚看到了一种方法,也是用Windows API,不过要加flag
快速回复
限100 字节
 
上一个 下一个