QSettings没有管理员权限不保存ini更改



>问题

我目前正在通过在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。

相关内容

  • 没有找到相关文章