//************************************************************************ // author: yuzhengyang // date: 2018.3.27 - 2018.6.3 // desc: 工具描述 // Copyright (c) yuzhengyang. All rights reserved. //************************************************************************ using Azylee.Core.WindowsUtils.APIUtils; using System; using System.Security.Principal; namespace Azylee.Core.AppUtils { public class PermissionTool { /// /// 当前登录用户是否为管理员 /// 百万次执行时间:26947、28705、28244 ms /// /// [Obsolete] public static bool IsAdministrator() { WindowsIdentity identity = WindowsIdentity.GetCurrent(); WindowsPrincipal principal = new WindowsPrincipal(identity); return principal.IsInRole(WindowsBuiltInRole.Administrator); } /// /// 当前登录用户是否为管理员 /// 百万次执行时间:8063、9097、9755 ms /// /// public static bool IsAdmin() { const int SECURITY_BUILTIN_DOMAIN_RID = 0x20; const int DOMAIN_ALIAS_RID_ADMINS = 0x220; byte[] NtAuthority = new byte[6]; NtAuthority[5] = 5; // SECURITY_NT_AUTHORITY IntPtr AdministratorsGroup; int ret = PermissionAPI.AllocateAndInitializeSid(NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, out AdministratorsGroup); if (ret != 0) { if (PermissionAPI.CheckTokenMembership(IntPtr.Zero, AdministratorsGroup, ref ret) == 0) { ret = 0; } PermissionAPI.FreeSid(AdministratorsGroup); } return (ret != 0); } } }