私は、ファイルシステム上の指定されたディレクトリにファイルをコピーする必要があるソフトウェアに取り組んでいます。UAC対応OS(Vista、7)とXPの両方で動作する必要があります。UACの昇格が必要なディレクトリへの書き込みの問題を回避するために、アプリは実際にUACが必要であることを示すマニフェストで別のプロセスを開始します。これによりプロンプトが生成され、ユーザーが確認するとコピーが実行されます。私が見ることができるものから、ディレクトリには、UAC昇格なしで書き込み可能、​​UAC昇格で書き込み可能、​​書き込み不可の3つの異なる論理アクセス許可状態を設定できます。7では、この許可が付与されていないディレクトリがありますが、このアクションはUACでも可能です。Answer11ファイルのWriteAccessのメソッドがあります。ディレクトリ(Directory.GetAccessControlなど)に適合させることができます。source2操作を試みるだけで、昇格のない書き込み可能なケースを処理します。それが失敗したときであり、潜在的に困難なUAC昇格を介して、書き込み不可と書き込み可能を区別する必要があります。私はプログラムがそれを理解しようとしているとは思わない(彼らは必然的にそれをかなり間違ってしまうので)。次の前提で設計しても安全だと思います。彼らは信頼していません→アプリが、昇格ではなく、キャンセルしたいUACを必要とするコンピューターに侵襲的な変更を加える場合。→実際のACLチェックは不要です。制限されたトークンを検出するだけで十分です。UACが必要とするアクションを完了する→制限されたトークンを確認すると、これらのケースを見逃します。場合によっては、同じ制限されたアクセス許可を使用して再試行することが正しいことです。アクセスが拒否された場合、Windowsが操作を拒否したことを説明するプロンプトを表示するAsInvoker操作を試すことをお勧めします。