“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第6篇文章,点击查看活动详情”
背景
windows应用程序中经常需要获取某个应用程序的配置信息,而windows中将这些信息都存放在注册表中,所以我们需要学会操作注册表。
什么是注册表
注册表是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。
注册表是windows操作系统中的一个核心数据库,其中存放着各种参数,直接控制着windows的启动、硬件驱动程序的装载以及一些windows应用程序的运行,在整个系统中起着核心作用。
这些作用包括了软、硬件的相关配置和状态信息,比如注册表中保存有应用程序和资源管理器外壳的初始条件、首选项和卸载数据等,联网计算机的整个系统的设置和各种许可,文件扩展名与应用程序的关联,硬件部件的描述、状态和属性,性能记录和其他底层的系统状态信息,以及其他数据等。
注册表的格式
注册表是以树状数据结构进行数据存储的,它由一级一级的文件夹组成,最后一级打开是一张表,里面有key值和它对应的value值。所以当我们想要操作注册表时,要知道它的文件路径一级key值。
Qt中操作注册表
在Qt中操作注册表可以用QSettins来实现,QSettins还可以实现对ini文件的操作,详细可以参见上篇文章。有时我们希望访问存储在注册表路径中的设置。QSettings构造函数,该构造函数以文件路径作为第一个参数,并将QSettings::NativeFormat作为第二个参数传递。例如:
QString RegPath = "HKEY_LOCAL_MACHINE\SOFTWARE\ABC\ABCD";
QSettings reg (RegPath, QSettings::NativeFormat);
QSettings key = "ABCDPath";
然后,就可以使用QSettings对象来获取注册表中某个key值的value:
QVariant value = reg.value(key); //读取注册表值
// 可以转化成QString
QString strValue = value.toString();
// 可以转化成int
QString nValue = value.toInt();
设置注册表中某个key值的value:
reg.setValue(key, "ABCDPathValue"); //设置注册表值
删除注册表中某个key:
reg.remove(key);
上面这些就是一些基本的通过QSettings操作注册表的方法了。以后如果还有用到其他方法,还会进行补充。