我有一个程序,它里面自己的文件夹保存数据。这就是我如何保存数据:一个QFile路径从Build版本改变部署版本
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
中。是因为用户吗?或者也许管理员权限?
相冲突在哪些文件夹不UAC的行为吗? – andseg
我不太记得,但你可以在文件夹权限中看到它。您可以检查您要写入的文件夹是否受UAC保护。 –
非常感谢。不仅你告诉我什么是问题,而且帮助我走向正确的方向:) – andseg