gpt4 book ai didi

c++ - QSettings 在没有管理员权限的情况下不保存 ini 更改

转载 作者:太空宇宙 更新时间:2023-11-04 12:49:26 25 4
gpt4 key购买 nike

问题

我目前正在通过在 Windows 上编写一个 mp3 播放器来学习 Qt。现在我想使用 QSettings 来保存对应用程序所做的更改。我已经尝试将更改保存到注册表(工作正常),但我想将它们存储在 ini 文件中(出于可移植性原因)。

但出于某种原因,我无法创建或写入现有的 ini 文件(阅读效果很好)。

到目前为止我尝试了什么

  • 以管理员权限运行该应用程序,该应用程序有效但并非始终可行
  • 使用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)带有名为“ protected 文件夹”的新功能,以防止例如勒索软件威胁。您可以在某处重新配置它。它不允许对桌面/文档等进行写访问。

但更可取的方法是将 ini 文件存储到其他位置,例如应用数据。

关于c++ - QSettings 在没有管理员权限的情况下不保存 ini 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49737380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com