辨別 .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中文網其他相關文章!