2

特別なフォルダーに書き込む必要があるレポートを作成するアプリケーション (.Net) をプログラミングしています。
問題は、私のアプリケーションのユーザーは、このフォルダーの読み取りアクセス許可を持っている必要がありますが、書き込みや変更は許可されていないことです。プログラムがユーザーから権限を継承する場合、このフォルダにファイルを作成するにはどうすればよいですか?

私は Windows のアクセス許可についてあまり詳しくないので、Windows のアクセス許可で処理できるかどうかはわかりません。

誰かが私に一般的な方向性を教えてもらえますか?

4

1 に答える 1

1

明らかな方法は、フォルダーへの書き込みアクセス許可を持つサービスを作成することです。これにより、フォルダーへの書き込み要求の "ブローカー" として機能できます。プロセスは次のようになります。

  1. [PROGRAM] 一時ファイル パスにレポート出力を作成します
  2. [PROGRAM] レポート出力 X が一時ファイル パスで利用可能であることを [SERVICE] に通知します。
  3. [サービス] レポート出力 X を一時ファイル パスから適切な制限された場所にコピーします。
  4. [SERVICE] 出力がコピーされたことを [PROGRAM] に通知します
  5. [PROGRAM] 制限された場所から出力にアクセスします。

制限された場所へのアクセスを仲介する別のブローカー プロセスを持つことは、現在非常に一般的であり、特に Internet Explorer で採用されている手法の 1 つであり、デフォルトで UAC および制限されたファイル システム アクセスで動作できるようにします。

たとえば、制限された場所に新しいファイルを作成することのみを許可する (つまり、API を公開する) ようにブローカー サービスをコーディングできます。これにより、履歴出力が削除/上書きされるのを防ぎ、標準ユーザーに読み取り以外のものを与える必要がなくなります。制限された場所へのアクセス。

大まかに似ていますが、Windows サービスを作成する必要を回避する別のアプローチは、手順 1 から 5 のアクションを実行する「昇格されたユーザー」の下で実行するように構成されたスケジュールされたタスクを作成することですが、それを構成します。アプリケーションによって(スケジュールではなく)オンデマンドで実行できるようにします(これは可能だと思いますが、100%確実ではありません)。

于 2012-06-26T10:44:10.530 に答える