Beispiel #1
0
        public ToolboxNode(bool isEdgeServerRoleOnly) : base(true)
        {
            ToolboxNode < > 4__this = this;
            base.DisplayName        = Strings.Toolbox;
            base.Icon      = Icons.Toolbox;
            base.HelpTopic = HelpId.ToolboxNode.ToString();
            base.ViewDescriptions.Add(ExchangeFormView.CreateViewDescription(typeof(ToolboxResultPane)));
            RefreshableComponent refreshableComponent = new RefreshableComponent();

            base.DataSource = refreshableComponent;
            refreshableComponent.DoRefreshWork += delegate(object sender, RefreshRequestEventArgs e)
            {
                DataList <Tool> dataList     = new DataList <Tool>();
                DataProvider    dataProvider = new RegistryDataProvider(Registry.LocalMachine, "SOFTWARE\\Microsoft\\ExchangeServer\\v15\\AdminTools\\Toolbox", ConfigurationContext.Setup.InstallPath);
                dataProvider.Query();
                for (int i = 0; i < dataProvider.Tools.Count; i++)
                {
                    Tool tool = dataProvider.Tools[i];
                    if (tool.Name != string.Empty && Tool.IsToolDuplicate(dataList, tool))
                    {
                        tool.ValidTool = false;
                        tool.AddErrorMessage(Strings.DuplicateTool(tool.DataSource));
                    }
                    else if (!isEdgeServerRoleOnly || !tool.NonEdgeTool)
                    {
                        dataList.Add(tool);
                    }
                }
                e.Result = dataList;
            };
            refreshableComponent.RefreshCompleted += delegate(object sender, RunWorkerCompletedEventArgs e)
            {
                if (e.Cancelled)
                {
                    return;
                }
                DataList <Tool> dataList = (DataList <Tool>)e.Result;
                this.ValidTools.Clear();
                DataList <Tool> dataList2 = new DataList <Tool>();
                for (int i = 0; i < dataList.Count; i++)
                {
                    if (dataList[i].ValidTool)
                    {
                        this.ValidTools.Add(dataList[i]);
                    }
                    else
                    {
                        dataList2.Add(dataList[i]);
                    }
                }
                if (dataList2.Count > 0)
                {
                    List <WorkUnit> list = new List <WorkUnit>();
                    for (int j = 0; j < dataList2.Count; j++)
                    {
                        WorkUnit workUnit = new WorkUnit();
                        workUnit.Text = dataList2[j].DataSource;
                        Exception ex = new Exception(dataList2[j].ErrorMessage);
                        workUnit.Errors.Add(new ErrorRecord(ex, LocalizedException.GenerateErrorCode(ex).ToString("X"), ErrorCategory.InvalidOperation, null));
                        workUnit.Status = WorkUnitStatus.Failed;
                        list.Add(workUnit);
                    }
                    UIService.ShowError(Strings.ErrorDialogMessage, string.Empty, list.ToArray(), base.ShellUI);
                }
            };
        }
Beispiel #2
0
        public override void Query()
        {
            base.Tools.Clear();
            RegistryKey registryKey = null;

            try
            {
                registryKey = this.baseRegKey.OpenSubKey(this.subKey);
                if (registryKey != null && registryKey.SubKeyCount != 0)
                {
                    string[]    subKeyNames  = registryKey.GetSubKeyNames();
                    RegistryKey registryKey2 = null;
                    for (int i = 0; i < subKeyNames.Length; i++)
                    {
                        Tool tool = new Tool();
                        try
                        {
                            tool.DataSource    = subKeyNames[i];
                            tool.WorkingFolder = this.workingFolder;
                            registryKey2       = registryKey.OpenSubKey(subKeyNames[i]);
                            string[] valueNames = registryKey2.GetValueNames();
                            if (valueNames == null || valueNames.Length == 0)
                            {
                                tool.ValidTool = false;
                                tool.AddErrorMessage(Strings.InvalidRegistryEntry(subKeyNames[i]));
                            }
                            else
                            {
                                tool.Name              = registryKey2.GetValue("Name", string.Empty).ToString();
                                tool.Description       = registryKey2.GetValue("Description", string.Empty).ToString();
                                tool.Assembly          = Environment.ExpandEnvironmentVariables(registryKey2.GetValue("Assembly", string.Empty).ToString());
                                tool.Command           = Environment.ExpandEnvironmentVariables(registryKey2.GetValue("Command", string.Empty).ToString());
                                tool.CommandFile       = Environment.ExpandEnvironmentVariables(registryKey2.GetValue("CommandFile", string.Empty).ToString());
                                tool.CommandParameters = Environment.ExpandEnvironmentVariables(registryKey2.GetValue("CommandParameters", string.Empty).ToString());
                                tool.GroupName         = registryKey2.GetValue("GroupName", string.Empty).ToString();
                                tool.Type              = registryKey2.GetValue("Type", string.Empty).ToString();
                                int num;
                                if (int.TryParse(registryKey2.GetValue("LocalizedName", 0).ToString(), out num))
                                {
                                    tool.LocalizedName = num;
                                }
                                if (int.TryParse(registryKey2.GetValue("LocalizedDescription", 0).ToString(), out num))
                                {
                                    tool.LocalizedDescription = num;
                                }
                                if (int.TryParse(registryKey2.GetValue("LocalizedGroupName", 0).ToString(), out num))
                                {
                                    tool.LocalizedGroupName = num;
                                }
                                if (int.TryParse(registryKey2.GetValue("GroupId", 0).ToString(), out num))
                                {
                                    tool.GroupId = num;
                                }
                                if (int.TryParse(registryKey2.GetValue("Icon", 0).ToString(), out num))
                                {
                                    tool.IconKey = num.ToString();
                                }
                                tool.Version = registryKey2.GetValue("Version", string.Empty).ToString();
                            }
                        }
                        catch (SecurityException)
                        {
                            tool.ValidTool = false;
                            tool.AddErrorMessage(Strings.InaccessibleRegistryEntry(subKeyNames[i]));
                        }
                        finally
                        {
                            if (registryKey2 != null)
                            {
                                registryKey2.Close();
                            }
                        }
                        tool.Initialize();
                        base.Tools.Add(tool);
                    }
                }
            }
            catch (SecurityException)
            {
            }
            finally
            {
                if (registryKey != null)
                {
                    registryKey.Close();
                }
            }
        }