.NET アプリケーションの昇格レベルの識別
この記事では、.NET アプリケーション内で標準の管理者権限での実行と昇格された管理者権限での実行を区別するという課題について説明します。
既存の方法と制限事項
既存の方法でも管理者のステータスを確認できますが、標準の管理者アクセスと管理者特権のアクセスを区別するという点では不十分です。
UacHelper を使用した拡張アプローチ
より堅牢なソリューションでは、UacHelper
クラスを利用します。
<code class="language-csharp">using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Security.Principal; using Microsoft.Win32; public static class UacHelper { ... // (Implementation details omitted for brevity) public static bool IsProcessElevated { get { if (IsUacEnabled) { // ... (Implementation details omitted for brevity) return elevationResult == TOKEN_ELEVATION_TYPE.TokenElevationTypeFull; } else { // ... (Implementation details omitted for brevity) return result; } } } }</code>
このクラスは、UAC (ユーザー アカウント制御) をチェックし、GetTokenInformation
関数を使用して標高タイプを正確に識別することで、標高レベルを効率的に決定します。 UAC が非アクティブな場合、デフォルトで WindowsPrincipal
ベースのチェックが行われます。
実装
アプリケーションの昇格ステータスを確認するには、次のコマンドを使用します。
<code class="language-csharp">bool isElevated = UacHelper.IsProcessElevated;</code>
この洗練された方法は、.NET アプリケーションの正確な昇格レベルを確認し、標準の管理者権限と完全に昇格された管理者権限を区別する信頼性の高い方法を提供します。
以上が.NET で管理者特権と昇格された管理者特権を区別するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。