2009-07-28 2 views
15

「プログラムファイル」フォルダの下に、私のアプリケーションは、C#で書かれている+ .NET 2.0 + VSTS 2008 Inno Setupの=>http://www.jrsoftware.org/isinfo.phpと私はインストールProgram Files/Fooフォルダ(Fooは私のアプリケーション名)の下の私のアプリケーション。私のアプリケーションはWindows Vistaを対象としています。私が見つけたファイルの書き込み権限の問題、私は自分のアプリケーションのインストールパッケージを作成するInno Setupのを使用しています

問題は、私のプログラムは、フォルダのプログラムファイル/ fooへの書き込みができないです。いくつかの設定ファイルを保存するには、このフォルダへの書き込みの許可が必要です。私が気づいた変なことは、フォルダProgram Files/Fooは読み取り専用としてマークされており、Program FilesのすべてのフォルダがOfficeなどの読み取り専用でマークされていることを確認しました。

私の質問は、唯一のプログラムファイルの下に読んですべてのフォルダがマークされているのはなぜ

  1. ですか?これは、Program Filesの下の個々のアプリケーションフォルダに書き込むべきではないということですか?そうでない場合は、個々のアプリケーションの最後に選択した構成情報のように、ディスクに情報を書き込むべき場所はどこですか?
  2. Program Filesの下の個々のアプリケーションフォルダに書き込むことができれば、解決策は何ですか?私はこの問題を解決するために自分のアプリケーションを実行管理者にしたくありません。このフォルダに書き込むソリューションがあれば、可能な限り最小限のアクセス許可を必要とします。一般的な解決策は、フォルダ、すなわちアプリケーションデータへの設定ファイルをインストールすることです

答えて

14

をあなたは使用して、現在のユーザーのApplication Dataフォルダにユーザー固有の設定データを書き込む必要がありますspecial folders enumおよびEnivronment.GetFolderPathである。

+0

Program Filesの下にある個々のアプリケーションフォルダは書き込みを推奨していませんか?出版されたガイドラインは? – George2

+1

Windows XP - アプリケーションのガイドライン –

+0

これは散歩です。 :-) Windows Vistaの場合、AppDataにデータを保存するためのベストプラクティスまたはガイドラインが公開されていますか? – George2

6

のような、次のとおりです。

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 
+0

Program Filesの下にある個々のアプリケーションフォルダは、書き込みを推奨していませんか?出版されたガイドラインは? – George2

12

ベストプラクティスは、Program Filesフォルダ内のコンフィグデータを格納しないことです。代わりに、%AppData%\ YourApplicationNameにアプリケーションのデータを格納します。 Vistaユーザーはない実行プログラムは、デフォルトでは

string userAppData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
string commonAppData = Envrionment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); 

ん:あなたはフォルダのパスを取得するには、次の列挙型のいずれかを使用し、ユーザーごとまたは共有される共通のフォルダに設定データを保存するかどうかに応じて、管理者として、したがって、これらのプログラムは"プログラムファイル"の下にあるフォルダへの読み取りアクセスしか持っていません。ユーザーはUACを無効にすることでこの動作を変更することができ、の場合はとすることができますが、オフィス環境ではユーザーにそのオプションがない可能性があります。そのため、代わりにAppDataを使用します。アプリケーションは常にというデータをAppDataフォルダに書き込みます。

UACに関する情報は、マイクロソフトのサイトを参照してください。このページはかなり長いですが、それはUACを理解するための出発点です: http://msdn.microsoft.com/en-us/library/bb530410.aspx