Windows アプリケーションは、高い特権を要求するタスクに頻繁に遭遇します。 不適切な取り扱いはセキュリティ上のリスクにつながり、ユーザーのワークフローを混乱させる可能性があります。代表的な例は、管理者アクセスを必要とする外部プロセスの起動です。
更新プログラムをダウンロードしてインストールするように設計された Visual Studio アプリケーションを想像してください。インストーラー自体には管理者権限が必要です。 次のコード スニペットは、この起動を試みます:
<code>Process p = new Process(); p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; p.StartInfo.FileName = strFile; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true;</code>
ユーザーが既に (UAC 経由で) 許可を付与している可能性がありますが、このコードはプロセスの昇格を保証しません。
アプローチ 1: Windows Vista 以降
Windows Vista 以降のバージョンの場合、簡単な解決策には「runas」動詞を追加する必要があります。
<code>// Check for Vista or later if (System.Environment.OSVersion.Version.Major >= 6) { p.StartInfo.Verb = "runas"; }</code>
アプローチ 2: アプリケーションマニフェスト
より堅牢なアプローチでは、アプリケーション マニフェスト ファイルを利用します。 この XML をマニフェスト内に含めます:
<code><requestedExecutionLevel level="requireAdministrator" uiaccess="false"></requestedExecutionLevel></code>
これには再コンパイルが必要ですが、より信頼性の高い昇格方法が提供されます。
重要な考慮事項: プロセス昇格は、セキュリティと良好なユーザー エクスペリエンスを維持するために絶対に必要な場合にのみ慎重に実装する必要があることに注意してください。
以上がWindows アプリケーションでプロセスを効果的に昇格するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。