示例#1
0
        private bool CheckPrivilege(string exectedPrivilege, SafeHandle currentUserToken)
        {
            AdvApi32PInvoke.LUID luid = default(AdvApi32PInvoke.LUID);

            expect(() => get_privilege_identifier(exectedPrivilege, out luid));

            AdvApi32PInvoke.PRIVILEGE_SET privilegeSet = new AdvApi32PInvoke.PRIVILEGE_SET();
            privilegeSet.PrivilegeCount          = 1;
            privilegeSet.Control                 = AdvApi32PInvoke.PRIVILEGE_SET.PRIVILEGE_SET_ALL_NECESSARY;
            privilegeSet.Privilege               = new AdvApi32PInvoke.LUID_AND_ATTRIBUTES[1];
            privilegeSet.Privilege[0].Luid       = luid;
            privilegeSet.Privilege[0].Attributes = AdvApi32PInvoke.LUID_AND_ATTRIBUTES.SE_PRIVILEGE_REMOVED;

            bool privilegeCheckResult;

            bool executionResult = AdvApi32PInvoke.PrivilegeCheck(currentUserToken.DangerousGetHandle(),
                                                                  ref privilegeSet, out privilegeCheckResult);

            expect(() => executionResult);

            return(privilegeCheckResult);
        }
示例#2
0
        private bool get_privilege_identifier(string expectedPrivilege, out AdvApi32PInvoke.LUID luid)
        {
            string systemName = null;

            return(AdvApi32PInvoke.LookupPrivilegeValue(systemName, expectedPrivilege, out luid));
        }