ブログの投稿があります:blogs.msdn.com/cjacks/archive/2008/02/05/where-should-i-write-program-data-instead-of-program-files.aspx(私はまだハイパーリンクすることは許されていません。修正されるまでカットアンドペーストしなければなりません)。
実際には、特定の質問を中心にしているようです。すべてのユーザーが書き込み可能とするファイルを持っている場合、エクスプローラでファイルを検出してダブルクリックするか、ファイルを非表示にし、アプリケーションでバックグラウンドでのみ使用するようにします。
すべてのユーザーがエクスプローラでファイルを検出できるようにするには、おそらくc:\ users \ publicに配置します。あなたがしなければならないことは、それらをその場所に置くことであり、デフォルトのセキュリティが機能するはずです。
ファイルをユーザーに表示しないようにするには、おそらくc:\ programdataにファイルを格納します。この場合、ファイルを作成するときにデフォルトのセキュリティが正しくない可能性があるため、アプリケーションにファイルをACLにする必要があります。それとも、セットアッププログラムでc:¥programdataの下にアプリケーション用のディレクトリ構造を作成し、セットアッププログラムで各ディレクトリのデフォルトACLを適切に設定しておくとよいでしょう - 実際にACLを設定することについて申し訳ありませんファイルを作成するだけで、適切な場所にファイルを作成するだけです。
すべての場合、適切なWin32(または.Net Framework)関数を呼び出して、c:\ programdataまたはc:\ users \ publicディレクトリへのパスを取得する必要があります。あなたのアプリでそれらのパスをハードコードしないでください - あなたがハードコードをすると、ユーザがディレクトリを移動したり、Windowsを何か珍しい方法でインストールした場合、あなたのアプリケーションが壊れることがあります。
どのようにプログラムで権限を変更しますか?おそらくCACLS? IIRCでは、管理者権限が必要です。 –
ファイルの作成者には通常、特別な権限があります。私は、UACの標高を必要とせずに、c:\ ProgramDataで作成したフォルダにUsersグループの書き込み権限を追加することができました。私は何らかのパーミッションをプログラミングしてからしばらくしています: – crashmstr