1.注册表操作
qt写入注册表比较简单,直接用自带的QSettings
QString baseUrl("HKEY_CURRENT_USER\\...."); // 要添加的目录
QSettings settingClasses(baseUrl, QSettings::NativeFormat);
setting.setValue("UserName", "Test"); //键值对形式添加
注册表值读取
setting.value("key").toString(); //直接获取对应键里面保存的值
2.环境变量操作
qt操作环境变量有点麻烦,这里我踩了一个坑,卡了好久...
刚开始在网上搜,大部分都是qputenv和qgetenv,使用运行程序后确实获取修改后的环境变量有变化,但是关闭程序后查看Windows环境变量没有一点改变.一开始我以为是哪里操作出了问题,找了好久发现是该修改只在程序运行时生效(qt果然是有操作的).可能和类QProcessEnvironment的静态方法systemEnvironment()的作用差不多(当时也试了这个,没啥用).
最后发现原来要想修改环境变量只能通过修改注册表(可能还有其他方法吧,但是没找到),又回到了最初的起点
注册表操作环境变量这里还有个小细节,HKEY_CURRENT_USER下的数据可以直接修改,HKEY_LOCAL_MACHINE下面的修改需要权限,只有在管理员权限下才可以操作(当时写入系统环境变量一直写不进去,一度又以为我哪里写错了...).
写入之前要获取当前的环境变量,然后与要添加的合并,然后整体添加进去,要不然直接添加就会覆盖原来的环境变量.
注意:修改环境变量比较危险,最好提前备份一下
QSettings setting("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment", QSettings::NativeFormat); //写入系统环境变量
QSettings setting("HKEY_CURRENT_USER\\Environment", QSettings::NativeFormat);//写入用户环境变量