2012-03-12 8 views
0

インストーラに含まれている空白のテキストファイルを書き込もうとしていますが、次のエラーが表示されます。C#でテキストファイルに書き込もうとしたときにUnauthorizedAccessExceptionが発生しました

System.UnauthorizedAccessException: Access to the path 'C:\Program Files (x86)\Hex Technologies\wamplocation.txt' is denied. 

それは私のインストーラによってインストールされます後は、ファイルのパーミッションのようですが、どのように私は、ファイルがインストールされたら、完全に修正するファイルを設定することができます! C#でこれを行うことはできますか?

EDITTED;

  wamp_url = openFileDialog1.FileName.ToString(); 
      String EnviromentPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
      StreamWriter outfile = new StreamWriter(EnviromentPath + @"\Hex Technologies\wamplocation.txt"); 
      outfile.Write(wamp_url); 
      outfile.Close(); 
+1

ウィンドウの7?、プログラムデータでないProgramDataに書き込む必要があります –

答えて

7

変更可能なデータファイルをProgram Filesパスに保存しないでください。 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)またはEnvironment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

Program Files \ ...パスは、Win7 +の通常のユーザーによる変更に対して保護されています。その保護を回避しようとするのは悪い考えです。

+0

ありがとうございます、下記の私のコメントを参照してください。 – r0bb077

2

UACがあなたのやり方になっています。

プログラムがこの場所に書き込まれないようにしてください。インストールプロセス中にこの変更ファイルを変更する必要があります。昇格していることを確認する必要がある場所はありません。

このファイルを実行時に変更する場合は、プログラムファイルではなく、ユーザーデータ用の%appdata%またはプログラムデータ用の%programdata%の使用を検討する必要があります。

+0

ありがとうございますが、今は 'ファイルが別のプロセスで使用されています'というメッセージが表示されます。私は私のコードがどのように見えるかを上に私のコードを挿入しました! – r0bb077

+0

アプリケーションデータに "Hex Technologies"フォルダがありますか? –

+0

はい、ストリームライターに入力した文字列をダブルチェックして、.txtファイルのURLと一致します。 – r0bb077

関連する問題