10

すべてのユーザー間で共有されるアプリケーション固有のデータを含むファイルを読み書きする必要があります。

を使用しようとしましたが、 C:\ProgramDataEnvironment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)しか返されません。

私の質問は:

Path.GetDirectoryName(Application.UserAppDataPath)アプリケーション名とバージョンに応じて、書き込む正確なフォルダーを提供するのようなシステムは存在しますか?

または、ProgramDataはそれを行うのに適切な場所ではありません。

ありがとう。

4

2 に答える 2

5

アプリケーション名とバージョンに応じて、書き込む正確なフォルダーを提供する Path.GetDirectoryName(Application.UserAppDataPath) のようなシステムは存在しますか?

いいえ、少なくとも Windows 7 で実行している場合は存在しません (Windows 8/WinRT/Windows ストア アプリについては知りません)。Environment.GetFolderPath(...)実行可能な解決策は、出力をアプリケーションのカスタム パスと連結することです。通常、衝突の可能性を減らすために、それはYourOrganization\YourApplication、またはのようなものでYourFullName\YourApplication、場合によってはバージョンを追加することもできます。

または、ProgramData はそれを行うのに適切な場所ではありません。

これは、アプリケーション全体の情報をディスクに保存するのに適した場所です。アプリケーションに関連し、マシンにログオンしている Windows ユーザーごとに異なる情報は、代わりに<User folder>\AppData\Roaming\...、または<User folder>\AppData\Local\....

注意: 誰かがコメントで既に述べたように、通常はC:\ProgramData...内で作業するには管理者権限が必要です。そのため、インストール段階でProgramData内にフォルダーを作成して与えるセットアップ プロジェクトを準備する必要があります。適切な権限。

于 2015-07-22T18:38:51.987 に答える