}//end of public static GetLUIDFromPrivilageName(Win32API.Privilege privilege) /// <summary> /// Checks Whether The Proccess Has A Specified Privilege /// </summary> /// <param name="privilege">Required Privilege</param> /// <param name="processTokenHandle">Token Handle of Process</param> public static Boolean HasPrivilege(Win32API.Privilege privilege, IntPtr processTokenHandle) { //Get the nessesary LUID for the required privilage Win32API.LUID _PrivLUID = GetLUIDFromPrivilageName(privilege); //did we get something valid? if (_PrivLUID.HighPart == 0) { return(false); } //get a list of privs Win32API.LUID_AND_ATTRIBUTES[] _Privs = GetPrivileges(processTokenHandle); //cycle through each privilage and dump out to screen foreach (var luidAndAttributes in _Privs) { if (luidAndAttributes.Luid.Equals(_PrivLUID)) { return(true); } }//end of foreach return(false); }
}//end of public static String GetPrivilegeName(Win32API.LUID luid) /// <summary> /// Gets The System LUID Value for The Specified Privilege /// </summary> /// <param name="privilege">Specified Privilege</param> /// <returns>Associated LUID Value</returns> public static Win32API.LUID GetLUIDFromPrivilageName(Win32API.Privilege privilege) { Win32API.LUID _LUID = new Win32API.LUID(); if (Win32API.LookupPrivilegeValue(String.Empty, privilege.ToString(), out _LUID) == false) { Console.WriteLine("## ERROR ## - Problem Resolving Privilage '{0}' To Its LUID!\nWin32 Error: '{1}'", privilege, Marshal.GetLastWin32Error()); return(new Win32API.LUID()); } return(_LUID); }//end of public static GetLUIDFromPrivilageName(Win32API.Privilege privilege)