>问题
我目前正在通过在Windows上编写mp3播放器来学习Qt。现在我想使用 QSettings
来保存对应用程序所做的更改。我已经尝试将更改保存到注册表(工作正常(,但我想将它们存储在 ini 文件中(出于可移植性原因(。
但是由于某种原因,我无法创建或编写现有的 ini-file(阅读效果很好(。
到目前为止我尝试过什么
- 以管理员权限运行应用程序,该应用程序有效,但并非始终可行
- 使用
QStandardPath
确保可写路径
MCVE
#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 文件仅在应用程序以管理员权限运行时生成/更新?有什么办法可以不这样做吗?
目前尚不清楚使用了哪些版本的操作系统。Windows 10(版本1709(具有称为"受保护文件夹"的新功能,以防止勒索软件威胁。您可以在某处重新配置它。它不允许对桌面/文档等进行写入访问。
但更可取的方法是将ini文件存储到其他位置,例如AppData。