public static Dictionary <string, Guid> GetPathAndGuids(string shellExPath) { Dictionary <string, Guid> dic = new Dictionary <string, Guid>(); foreach (string cmhPart in CmhParts) { using (RegistryKey cmKey = RegistryEx.GetRegistryKey($@"{shellExPath}\{cmhPart}")) { if (cmKey == null) { continue; } foreach (string keyName in cmKey.GetSubKeyNames()) { using (RegistryKey key = cmKey.OpenSubKey(keyName)) { if (!GuidInfo.TryGetGuid(key.GetValue("")?.ToString(), out Guid guid)) { GuidInfo.TryGetGuid(keyName, out guid); } if (!guid.Equals(Guid.Empty)) { dic.Add(key.Name, guid); } } } } } return(dic); }
private void LoadShellExItems() { foreach (XmlElement itemXE in shellExXE.GetElementsByTagName("Item")) { if (!GuidInfo.TryGetGuid(itemXE.GetAttribute("Guid"), out Guid guid)) { continue; } if (ShellExItem.GetPathAndGuids(ShellExPath).Values.Contains(guid)) { continue; } ShellExCommonItem item = new ShellExCommonItem { Image = ResourceIcon.GetIcon(itemXE.GetAttribute("Icon"))?.ToBitmap() ?? AppImage.DllDefaultIcon, Text = ResourceString.GetDirectString(itemXE.GetAttribute("Text")), DefaultKeyName = itemXE.GetAttribute("KeyName"), Guid = guid }; if (string.IsNullOrWhiteSpace(item.Text)) { item.Text = GuidInfo.GetText(guid); } if (string.IsNullOrWhiteSpace(item.DefaultKeyName)) { item.DefaultKeyName = guid.ToString("B"); } item.SetTip(itemXE.GetAttribute("Tip")); list.AddItem(item); } }
private void LoadShellExItems(XmlElement shellExXE, GroupPathItem groupItem) { foreach (XmlElement itemXE in shellExXE.GetElementsByTagName("Item")) { XmlElement verXE = (XmlElement)itemXE.SelectSingleNode("OSVersion"); if (!JudgeOSVersion(verXE)) { continue; } if (!GuidInfo.TryGetGuid(itemXE.GetAttribute("Guid"), out Guid guid)) { continue; } EnhanceShellExItem item = new EnhanceShellExItem { FoldGroupItem = groupItem, ShellExPath = $@"{groupItem.TargetPath}\ShellEx", Image = ResourceIcon.GetIcon(itemXE.GetAttribute("Icon"))?.ToBitmap() ?? AppImage.DllDefaultIcon, Text = ResourceString.GetDirectString(itemXE.GetAttribute("Text")), DefaultKeyName = itemXE.GetAttribute("KeyName"), Guid = guid }; if (item.Text.IsNullOrWhiteSpace()) { item.Text = GuidInfo.GetText(guid); } if (item.DefaultKeyName.IsNullOrWhiteSpace()) { item.DefaultKeyName = guid.ToString("B"); } item.ChkVisible.Checked = item.ItemVisible; MyToolTip.SetToolTip(item.ChkVisible, itemXE.GetAttribute("Tip")); this.AddItem(item); } }
private void LoadCommonItems() { List <string> values = new List <string>(); Array.ForEach(GuidBlockedItem.BlockedPaths, path => { using (RegistryKey key = RegistryEx.GetRegistryKey(path)) if (key != null) { values.AddRange(key.GetValueNames()); } }); Array.ForEach(values.Distinct(StringComparer.OrdinalIgnoreCase).ToArray(), value => { if (GuidInfo.TryGetGuid(value, out Guid guid, out string guidPath)) { this.AddItem(new GuidBlockedItem(guid, guidPath)); } });
public void LoadItems() { this.ClearItems(); XmlDocument doc1 = new XmlDocument(); if (!File.Exists(Program.AppDataThirdRulesDicPath)) { File.WriteAllText(Program.AppDataThirdRulesDicPath, Properties.Resources.ThirdRulesDic, Encoding.UTF8); } doc1.Load(Program.AppDataThirdRulesDicPath); if (File.Exists(Program.ThirdRulesDicPath)) { XmlDocument doc2 = new XmlDocument(); doc2.Load(Program.ThirdRulesDicPath); foreach (XmlNode xn in doc2.DocumentElement.ChildNodes) { XmlNode node = doc1.ImportNode(xn, true); doc1.DocumentElement.AppendChild(node); } } foreach (XmlElement groupXE in doc1.DocumentElement.ChildNodes) { if (!GuidInfo.TryGetGuid(groupXE.GetAttribute("Guid"), out Guid guid) && !groupXE.HasAttribute("Common")) { continue; } GroupPathItem groupItem = new GroupPathItem { Text = groupXE.GetAttribute("Text"), TargetPath = groupXE.GetAttribute("RegPath"), PathType = ObjectPath.PathType.Registry, Image = GuidInfo.GetImage(guid), }; if (string.IsNullOrWhiteSpace(groupItem.Text)) { groupItem.Text = GuidInfo.GetText(guid); } this.AddItem(groupItem); foreach (XmlElement itemXE in groupXE.ChildNodes) { RegRuleItem.ItemInfo itemInfo = new RegRuleItem.ItemInfo { Text = itemXE.GetAttribute("Text"), Tip = itemXE.GetAttribute("Tip"), RestartExplorer = itemXE.HasAttribute("RestartExplorer"), }; XmlNodeList ruleXNList = itemXE.GetElementsByTagName("Rule");//Rules RegRuleItem.RegRule[] rules = new RegRuleItem.RegRule[ruleXNList.Count]; for (int i = 0; i < ruleXNList.Count; i++) { XmlElement ruleXE = (XmlElement)ruleXNList[i]; rules[i] = new RegRuleItem.RegRule { RegPath = ruleXE.GetAttribute("RegPath"), ValueName = ruleXE.GetAttribute("ValueName"), TurnOnValue = ruleXE.GetAttribute("On"), TurnOffValue = ruleXE.GetAttribute("Off"), ValueKind = GetValueKind(ruleXE.GetAttribute("ValueKind")) }; if (string.IsNullOrEmpty(rules[i].RegPath)) { rules[i].RegPath = groupItem.TargetPath; } else if (rules[i].RegPath.StartsWith("\\")) { rules[i].RegPath = groupItem.TargetPath + rules[i].RegPath; } } this.AddItem(new RegRuleItem(rules, itemInfo) { FoldGroupItem = groupItem }); } groupItem.IsFold = true; } }
public void LoadItems() { try { foreach (XmlElement groupXE in ReadXml().DocumentElement.ChildNodes) { Guid guid = Guid.Empty; if (groupXE.HasAttribute("Guid") && !GuidInfo.TryGetGuid(groupXE.GetAttribute("Guid"), out guid)) { continue; } GroupPathItem groupItem = new GroupPathItem(groupXE.GetAttribute("RegPath"), ObjectPath.PathType.Registry) { Text = groupXE.GetAttribute("Text"), Image = GuidInfo.GetImage(guid), }; if (groupItem.Text.IsNullOrWhiteSpace()) { groupItem.Text = GuidInfo.GetText(guid); } this.AddItem(groupItem); foreach (XmlElement itemXE in groupXE.ChildNodes) { XmlElement verXE = (XmlElement)itemXE.SelectSingleNode("OSVersion"); if (!EnhanceMenusList.JudgeOSVersion(verXE)) { continue; } RegRuleItem.ItemInfo itemInfo = new RegRuleItem.ItemInfo { Text = itemXE.GetAttribute("Text"), Tip = itemXE.GetAttribute("Tip"), RestartExplorer = itemXE.HasAttribute("RestartExplorer"), }; XmlNodeList ruleXNList = itemXE.GetElementsByTagName("Rule");//Rules RegRuleItem.RegRule[] rules = new RegRuleItem.RegRule[ruleXNList.Count]; for (int i = 0; i < ruleXNList.Count; i++) { XmlElement ruleXE = (XmlElement)ruleXNList[i]; rules[i] = new RegRuleItem.RegRule { RegPath = ruleXE.GetAttribute("RegPath"), ValueName = ruleXE.GetAttribute("ValueName"), TurnOnValue = ruleXE.GetAttribute("On"), TurnOffValue = ruleXE.GetAttribute("Off"), ValueKind = GetValueKind(ruleXE.GetAttribute("ValueKind")) }; if (string.IsNullOrEmpty(rules[i].RegPath)) { rules[i].RegPath = groupItem.TargetPath; } else if (rules[i].RegPath.StartsWith("\\")) { rules[i].RegPath = groupItem.TargetPath + rules[i].RegPath; } } this.AddItem(new RegRuleItem(rules, itemInfo) { FoldGroupItem = groupItem, HasImage = false }); } groupItem.IsFold = true; } } catch { } }