예제 #1
0
        }//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);
        }
예제 #2
0
        /// <summary>
        /// Resolves A Specified LUID Value Into The Apropriate Windows Privilege
        /// </summary>
        public static String GetPrivilegeName(Win32API.LUID luid)
        {
            try
            {
                StringBuilder _PrivilegeName = new StringBuilder();

                //hold the length of the LuID Struct
                Int32 _NameLength = 0;

                //first method call is to get the _NameLength so we can allocate a buffer
                Win32API.LookupPrivilegeName(String.Empty, ref luid, _PrivilegeName, ref _NameLength);

                //make sure there is sufficient space in memory
                _PrivilegeName.EnsureCapacity(_NameLength);

                //look up the privilage name
                if (Win32API.LookupPrivilegeName(String.Empty, ref luid, _PrivilegeName, ref _NameLength))
                {
                    return(_PrivilegeName.ToString());
                }//if (Win32API.LookupPrivilegeName(String.Empty, ref luid, _PrivilegeName, ref _NameLength))
            }
            catch (Exception)
            {
                Console.WriteLine("## ERROR ## - Problem Getting Privilege Name!\nWin32 Error: '{0}', LUID '{1}'", Marshal.GetLastWin32Error(), luid);
            }//end of try-catch

            //default catch all
            return(String.Empty);
        }//end of public static String GetPrivilegeName(Win32API.LUID luid)
예제 #3
0
        /// <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;
        }
예제 #4
0
        }//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)