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); } }; }
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(); } } }