11

私のアプリケーションは、ほとんどの場合と同様に、データを保存する必要があります。このアプリケーションは、以前はXPでデータを保存する場所でのみ使用されていましたProgram Files。お客様がWindows7に移行しているので、データを新しいフォルダーに保存するようにアップグレードする必要がありました。ApplicationDataUACをまったく必要とせずにアクセスが許可されると思ったので、このフォルダーを選択しました。

現在、一部のWindows 7マシンではこれで問題ありませんが、他のマシンでは、おそらくアクセス許可が原因でフォルダーへのアクセスが失敗しますが、管理者特権で実行すると、プログラムは正常に機能します。

間違ったフォルダを使用していますか、それともこれらのケースは外れ値ですか?どちらの場合でも、この種のことのベストプラクティスは何ですか?

次のC#SpecialFolderを使用して、AppDataフォルダーの場所を取得しています。

System.Environment.SpecialFolder.ApplicationData
4

2 に答える 2

10

System.Environment.SpecialFolder.ApplicationDataユーザーごとにローミングします。それはあなたが望むもののようには聞こえません。マシン全体の設定が必要なようですので、を使用する必要がありますSystem.Environment.SpecialFolder.CommonApplicationData

すべてのユーザー間で共有されるためCommonApplicationData、デフォルトのアクセス制御は制限されています。デフォルトでは、標準ユーザーはこの場所に書き込むことができません。推奨される方法はCommonApplicationData、インストール時にのサブフォルダーを作成し、それに適切に許容されるアクセス制御設定を割り当てることです。

于 2011-02-25T11:58:33.300 に答える
2

デビッドは正しいです。私の知る限り、ClickOnceまたはインストーラーを使用してアプリをデプロイする場合にもいくつかの違いがあります。最初の方法では、通常のインストーラーよりもいくつかのアクセス許可のサブセットが許可されます。私はその専門家ではないことを告白しなければなりません。

確かに、プログラムファイルは、XP以降でも、データを保存するのに最悪の場所です。

于 2011-02-25T12:04:25.647 に答える