Exemplo n.º 1
0
        private unsafe static bool ArePrivilegesEnabled(this AccessToken token, bool all, Privilege[] privileges)
        {
            if (privileges == null || privileges.Length == 0)
            {
                return(true);
            }

            byte *        buffer = stackalloc byte[sizeof(PrivilegeSet) + (sizeof(LuidAndAttributes) * (privileges.Length - 1))];
            PrivilegeSet *set    = (PrivilegeSet *)buffer;

            set->Control        = all ? PRIVILEGE_SET_ALL_NECESSARY : 0;
            set->PrivilegeCount = (uint)privileges.Length;
            Span <LuidAndAttributes> luids = new Span <LuidAndAttributes>(&set->Privilege, privileges.Length);

            for (int i = 0; i < privileges.Length; i++)
            {
                luids[i] = LookupPrivilegeValue(privileges[i]);
            }

            if (!Imports.PrivilegeCheck(token, set, out Boolean32 result))
            {
                throw Error.GetExceptionForLastError();
            }

            return(result);
        }
Exemplo n.º 2
0
 public unsafe static extern Boolean32 PrivilegeCheck(
     AccessToken ClientToken,
     PrivilegeSet *RequiredPrivileges,
     out Boolean32 pfResult);
Exemplo n.º 3
0
 public static unsafe extern IntBoolean PrivilegeCheck(
     AccessToken ClientToken,
     PrivilegeSet *RequiredPrivileges,
     out IntBoolean pfResult);