Qt问题-QSettings读取注册表
问题描述
QSettings
在32-bit
程序中访问"\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall"是可以的,
但是访问不了"\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall",
在64-bit
程序中访问上面的都可以。
问题分析
1
在Microsoft
文档中有相关说明:访问备用注册表视图
2
QSetting访问注册表问题
发现这两个注册表节点
“\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall”
“\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall”
在QSetting加载第一个节点时,会自动重定向到第二个上面
有什么办法正确的访问第一个吗
Win10
用win api关闭重定向即可,操作前关闭,操作后恢复
64位系统下的32位程序是这样的
除非你是多个程序配合开发,否则不建议改
问题解决
在QT下使用msvc或minGW时记得在pro
中添加:LIBS += -lsetupapi -ladvapi32
1 | const QString REG_UNINSTALL = R"(Software\Microsoft\Windows\CurrentVersion\Uninstall\xx)"; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Vinda's Blog!
评论