我有一个程序可以将数据保存在自己的文件夹中。这是我保存数据的方式:
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
中。是因为用户?或者管理权限?
答案 0 :(得分:2)
由于Windows Vista(UAC)引入了安全功能,任何试图写入受保护位置(例如“Program Files”)的非管理员程序都会将其写入捕获并重定向到另一个“用户友好”位置。
在你的情况下C:\Users\SOCC\AppData\Local\VirtualStore\Program Files (x86)\SOCC_Pesquisa\config\Values
您可以找到有关UAC here on Wikipedia
的更多信息所以你可以朝这些方向前进: