明らかな方法は、フォルダーへの書き込みアクセス許可を持つサービスを作成することです。これにより、フォルダーへの書き込み要求の "ブローカー" として機能できます。プロセスは次のようになります。
- [PROGRAM] 一時ファイル パスにレポート出力を作成します
- [PROGRAM] レポート出力 X が一時ファイル パスで利用可能であることを [SERVICE] に通知します。
- [サービス] レポート出力 X を一時ファイル パスから適切な制限された場所にコピーします。
- [SERVICE] 出力がコピーされたことを [PROGRAM] に通知します
- [PROGRAM] 制限された場所から出力にアクセスします。
制限された場所へのアクセスを仲介する別のブローカー プロセスを持つことは、現在非常に一般的であり、特に Internet Explorer で採用されている手法の 1 つであり、デフォルトで UAC および制限されたファイル システム アクセスで動作できるようにします。
たとえば、制限された場所に新しいファイルを作成することのみを許可する (つまり、API を公開する) ようにブローカー サービスをコーディングできます。これにより、履歴出力が削除/上書きされるのを防ぎ、標準ユーザーに読み取り以外のものを与える必要がなくなります。制限された場所へのアクセス。
大まかに似ていますが、Windows サービスを作成する必要を回避する別のアプローチは、手順 1 から 5 のアクションを実行する「昇格されたユーザー」の下で実行するように構成されたスケジュールされたタスクを作成することですが、それを構成します。アプリケーションによって(スケジュールではなく)オンデマンドで実行できるようにします(これは可能だと思いますが、100%確実ではありません)。