private static CodeToolInfo CodeToolsInfoFromRegistry(string vsRoot, string toolName, RegistryKey toolKey) { int refreshDelay = defaultRefreshDelay; try { refreshDelay = (int)toolKey.GetValue("RefreshDelay", defaultRefreshDelay); } catch { } string displayName = toolKey.GetValue("DisplayName", toolName) as string; CodeToolInfo tool = new CodeToolInfo(vsRoot, toolName, displayName, refreshDelay); RegistryKey propPagesKey = toolKey.OpenSubKey("PropertyPages", false); if (propPagesKey != null) { foreach (string propPage in propPagesKey.GetSubKeyNames()) { PropertyPageInfo pageInfo = PropertyPageInfo.PropertyPageInfoFromRegistry(tool, propPagesKey, propPage); if (pageInfo != null) { tool.propertyPages.Add(pageInfo); } } } RegistryKey targetsKey = toolKey.OpenSubKey("CommonTargets", false); if (targetsKey != null) { foreach (string target in targetsKey.GetSubKeyNames()) { RegistryKey targetKey = targetsKey.OpenSubKey(target, false); if (targetKey != null) { TargetInfo targetInfo = TargetInfo.ReadFromRegistry(tool, targetKey, target); if (targetInfo != null) { tool.targets.Add(targetInfo); } } } } return(tool); }