2017-01-09 5 views
3

私は自分のフォルダ内にデータを保存するプログラムを持っています。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。それはなぜそんなに違うフォルダに変わるのですか?

EDIT:いくつかのテストを行うと、問題はインストーラにではなく、インストールされている場所にあることがわかりました。何らかの理由で私のプログラムをC:\Program Files (x86)に渡すと、データは常にC:\Users\SOCC\AppData\Local\VirtualStore\Program Files (x86)\SOCC_Pesquisa\config\Valuesに保存されます。それはユーザーのためですか?管理者権限ですか?

答えて

4

Windows Vista(UAC)で導入されたセキュリティ機能のため、「プログラムファイル」などの保護された場所に書き込もうとする管理者以外のプログラムは、書き込みを取得して代わりの「ユーザーフレンドリー」の場所にリダイレクトします。管理者として

  1. 実行プログラムごとに:あなたはあなたがこれらの方向に移動することができますUAC here on Wikipedia

    についての詳細を調べることができます場合C:\Users\SOCC\AppData\Local\VirtualStore\Program Files (x86)\SOCC_Pesquisa\config\Values

  2. ディレクトリのセキュリティ設定を変更します。プロパティを使用して、セキュリティタブを選択し、次に拡張します。
  3. Wikipedia linkにあるように、アプリの高度をリクエストしてください。
  4. 変更するには、UACの行為を何フォルダでUAC
+0

と衝突していない好きな書類など、より安全で、通常の貯蓄の場所? – andseg

+0

私は本当に覚えていませんが、あなたはフォルダのアクセス許可でそれを見ることができます。書き込みたいフォルダがUACで保護されているかどうかを確認できます。 –

+0

ありがとうございました。あなたは問題が何だったか教えてくれただけでなく、正しい方向に進むのを助けました:) – andseg

関連する問題