辨别 .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中文网其他相关文章!