コード例 #1
0
        int EvalRights(int allowedMask, int deniedMask)
        {
            Type rightType = Ace.RightData.RightType;

            IAccessControlEntry allowedAce = AccessControlEntryUtilities.MakeGenericAceFromType(rightType);

            allowedAce.Allowed = true;
            allowedAce.SetRight(allowedMask.ToString());

            IAccessControlEntry deniedAce = AccessControlEntryUtilities.MakeGenericAceFromType(rightType);

            deniedAce.Allowed = false;
            deniedAce.SetRight(deniedMask.ToString());

            _sd.Clear();
            _sd.Dacl.Add(allowedAce);
            _sd.Dacl.Add(deniedAce);
            _sd.Eval(rightType);

            //suppress reentrancy into this function: IsChecked=true fires CheckBox_Checked
            _suppressRightsEval = true;
            int mask = 0;

            foreach (CheckBox cb in this.Items)
            {
                cb.IsChecked = _sd.Results.GetByTypeRight(rightType, (int)cb.Content).AccessAllowed;

                if (cb.IsChecked.Value)
                {
                    mask |= (int)cb.Content;
                }
            }
            _suppressRightsEval = false;

            return(mask);
        }