QFile路径从构建版本更改为部署版本

时间:2017-01-09 18:46:01

标签: qt save qfile

我有一个程序可以将数据保存在自己的文件夹中。这是我保存数据的方式:

QString path = "./config/Values/"+Name+"/";
QDir *myDir = new QDir();
myDir->mkpath(path);
path += Name+"_";
path += Date+".txt";
QFile File(path);
QTextStream Out(&File);
Out.setCodec("UTF-8");
if(!File.open(QFile::WriteOnly | QFile::Text))
   return;
out << data;
File.close();

每次我通过QT运行程序时,保存的数据都会转到路径:C:\Andre\Qt files\build-Pesquisa-Desktop_Qt_5_7_0_MinGW_32bit-Release\release\config\Values。为了清楚起见,我将发送完整的路径。

但是,我为该程序安装了一个安装程序。该程序安装在C:\Program Files (x86)\SOCC_Pesquisa中。所以新路径应该是:C:\Program Files (x86)\SOCC_Pesquisa\config\Values对吗?

虽然,当我运行程序并检查数据的保存位置时,我得到了这条路径:C:\Users\SOCC\AppData\Local\VirtualStore\Program Files (x86)\SOCC_Pesquisa\config\Values。为什么它突然改变到这样一个不同的文件夹?

编辑:通过一些测试我发现问题不在安装程序中,而是在安装它的地方。出于某种原因,当我将程序传递给C:\Program Files (x86)时,数据始终保存在C:\Users\SOCC\AppData\Local\VirtualStore\Program Files (x86)\SOCC_Pesquisa\config\Values中。是因为用户?或者管理权限?

1 个答案:

答案 0 :(得分:2)

由于Windows Vista(UAC)引入了安全功能,任何试图写入受保护位置(例如“Program Files”)的非管理员程序都会将其写入捕获并重定向到另一个“用户友好”位置。

在你的情况下C:\Users\SOCC\AppData\Local\VirtualStore\Program Files (x86)\SOCC_Pesquisa\config\Values

您可以找到有关UAC here on Wikipedia

的更多信息

所以你可以朝这些方向前进:

  1. 每次都以管理员身份运行程序。
  2. 更改目录的安全设置:转到属性,选择“安全”选项卡,然后选择“高级”。
  3. 您可以在Wikipedia link找到您的应用的提升权。
  4. 将储蓄地点更改为更安全和通常的方式,例如文档或任何您不希望与UAC冲突的内容
相关问题