アプリケーション名とバージョンに応じて、書き込む正確なフォルダーを提供する 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内にフォルダーを作成して与えるセットアップ プロジェクトを準備する必要があります。適切な権限。