C++ Qt。所有函数都在发布文件夹中工作,但不在程序文件中

C++ Qt。所有函数都在发布文件夹中工作,但不在程序文件中,c++,qt,C++,Qt,在我的程序中,我有重新启动程序和从.ini文件加载/保存设置的功能。所有东西都在release文件夹中工作,但当我安装它时(程序在C://program Files(x86)中): *当我调用重启函数时 QProcess::startDetached(QApplication::applicationFilePath()); exit(0); 应用程序正在终止自身,但新实例未启动 *或者当我调用将设置保存到.ini文件时 QSettings setting(qApp->applicati

在我的程序中,我有重新启动程序和从.ini文件加载/保存设置的功能。所有东西都在release文件夹中工作,但当我安装它时(程序在C://program Files(x86)中):

*当我调用重启函数时

QProcess::startDetached(QApplication::applicationFilePath());
exit(0);
应用程序正在终止自身,但新实例未启动

*或者当我调用将设置保存到.ini文件时

QSettings setting(qApp->applicationDirPath() + "//config//settings.ini", QSettings::IniFormat);
setting.sync();
setting.beginGroup("/Example");
setting.setValue("/Example1", 
setting.endGroup();
当我第一次运行应用程序时,通常会保存一次,但下次不保存设置时,Settings.ini或我试图保存的任何其他.ini文件看起来像“已锁定”,即使通过记事本也无法保存。。。但如果我使用管理员权限运行应用程序,一切都正常(重启仍然不正常)

//编辑:我已经在桌面上检查过了,可以用了。在另一个分区(D://)上它不工作


此时,其他功能正常工作。有人能帮我解决这个问题吗?

我想你需要管理员权限才能在最新的windows中创建文件到程序文件。请尝试在其他地方安装它,并检查它是否仍然失败。默认情况下,您需要管理员权限才能在程序文件中写入

您的应用程序应该使用路径
C:\ProgramData
(假设
C:
系统驱动器)来保存要与所有用户共享的文件(最终在其中创建一个包含公司/应用程序名称的目录)。应使用环境变量
ProgramData
AllUsersProfile
访问该位置

或者,要分别为每个用户保存设置/数据,您可以使用这些环境变量访问所需的目录:

  • AppData
    (扩展到例如
    C:\Users\\AppData\Roaming
    )-特定于用户配置文件的数据

  • LocalAppData
    (扩展到例如
    C:\Users\\AppData\Local
    )-特定于机器的数据


getenv
函数可用于读取环境变量。

如果启用了UAC,则无法将数据保存到Windows中的program files文件夹。这是设计的,不是bug。文件是随着安装而创建的。我试着把它安装在桌面的D,E分区上。它起作用了。我可以在ProgramFiles中使用它吗?不,如果没有管理员权限,则无法将文件保存到ProgramFiles,除非禁用windows的UAC,当然不建议这样做。OK,重新启动有什么用?请再次阅读我的问题。。。我也有问题的重新启动功能。即使在重新启动时,您必须始终以管理员身份运行应用程序,以便从programfiles文件夹工作。没有一种永久的方法来设置“以管理方式运行”命令OK,重新启动是什么意思?能否检查
starteddetached
是否返回
true
(是否成功)?还有
applicationFilePath
的返回;QMessageBox::信息(这个“测试”、“真”);在程序文件中,它返回“True”,但我不确定我是否以正确的方式创建了它。applicationFilePath返回正确的路径。另请参阅以独立于平台的方式查找位置。