我目前正在通过在Windows上编写mp3播放器来学习Qt。现在我想使用QSettings
来保存对应用程序所做的更改。我已经尝试将更改保存到注册表(工作正常)但我想将它们存储在ini文件中(出于可移植性的原因)。
但由于某种原因,我无法创建或编写现有的ini文件(阅读效果很好)。
QStandardPath
确保可写路径#include <QCoreApplication>
#include <QSettings>
#include <QDebug>
#include <QFileInfo>
#include <QStandardPaths>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QString path = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
path = path + "/settings.ini";
QFileInfo info(path);
qDebug() << info.exists();
qDebug() << info.isWritable();
QSettings settings(path, QSettings::IniFormat);
settings.setValue("key", "value");
settings.sync();
return 0;
}
为什么只有在应用程序以管理员权限运行时才生成/更新ini文件?有没有办法没有?
答案 0 :(得分:0)
目前尚不清楚使用哪种版本的操作系统。 Windows 10(版本1709)附带名为“受保护的文件夹”的新功能,以防止例如勒索软件威胁。你可以在某处重新配置它。它禁止对桌面/文档等进行写访问。
但更优选的方法是将ini文件存储到其他位置,例如应用程序数据。