private bool OverrideWithGroupPolicyTypeTypesAndGenerateWmiObjectsForPolicyType(ExceptionTypeData exceptionType,
                                                                                        ExceptionPolicyData parentPolicy,
                                                                                        bool readGroupPolicies, IRegistryKey machineKey, IRegistryKey userKey,
                                                                                        bool generateWmiObjects, ICollection <ConfigurationSetting> wmiSettings)
        {
            if (readGroupPolicies)
            {
                IRegistryKey policyKey = machineKey != null ? machineKey : userKey;
                if (policyKey != null)
                {
                    if (policyKey.IsPolicyKey && !policyKey.GetBoolValue(PolicyValueName).Value)
                    {
                        return(false);
                    }
                    try
                    {
                        PostHandlingAction?postHandlingActionOverride
                            = policyKey.GetEnumValue <PostHandlingAction>(PolicyTypePostHandlingActionPropertyName);

                        exceptionType.PostHandlingAction = postHandlingActionOverride.Value;
                    }
                    catch (RegistryAccessException ex)
                    {
                        LogExceptionWhileOverriding(ex);
                    }
                }
            }
            if (generateWmiObjects)
            {
                ExceptionTypeSetting wmiSetting
                    = new ExceptionTypeSetting(exceptionType.Name,
                                               exceptionType.Type.AssemblyQualifiedName,
                                               exceptionType.PostHandlingAction.ToString());
                wmiSetting.Policy = parentPolicy.Name;
                wmiSettings.Add(wmiSetting);
            }

            List <ConfigurationSetting> handlerSettings = new List <ConfigurationSetting>(exceptionType.ExceptionHandlers.Count);

            OverrideWithGroupPoliciesAndGenerateWmiObjectsForElementCollection(exceptionType.ExceptionHandlers,
                                                                               PolicyTypeHandlersPropertyName,
                                                                               readGroupPolicies, machineKey, userKey,
                                                                               generateWmiObjects, handlerSettings);

            int i = 0;

            foreach (ExceptionHandlerSetting setting in handlerSettings)
            {
                setting.Policy        = parentPolicy.Name;
                setting.ExceptionType = exceptionType.Name;
                setting.Order         = i++;
                wmiSettings.Add(setting);
            }

            return(true);
        }
示例#2
0
        public static void GenerateExceptionTypeWmiObjects(ExceptionTypeData exceptionType,
                                                           ExceptionPolicyData parentPolicy,
                                                           ICollection <ConfigurationSetting> wmiSettings)
        {
            ExceptionTypeSetting wmiSetting
                = new ExceptionTypeSetting(exceptionType,
                                           exceptionType.Name,
                                           exceptionType.Type.AssemblyQualifiedName,
                                           exceptionType.PostHandlingAction.ToString());

            wmiSetting.Policy = parentPolicy.Name;
            wmiSettings.Add(wmiSetting);
        }