// 树节点KEY名编辑完成事件 private void treeView_Registry_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) { // 关闭TreeView的编辑功能 MainForm.main.treeView_Registry.LabelEdit = false; string keyName = e.Label == null ? e.Node.Text : e.Label; try { // 获取其父节点的RegistryKey对象 RegistryKey readOnlyParent = e.Node.Parent.Tag as RegistryKey; // 将父节点的RegistryKey对象转换为cRegKey对象 cRegKey parent = cRegKey.Parse(readOnlyParent.Name, true); // 父节点下建立我们的子KEY parent.Key.CreateSubKey(keyName); // 存储子节点当前完整路径 e.Node.Name = parent.Key.Name + "\\" + keyName; // 关联当前子节点对象 e.Node.Tag = cRegKey.Parse(e.Node.Name).Key; } catch { e.Node.Remove(); MessageBox.Show("[x_x]:" + Common.CommonFunction.GetLastError32()); } }
/// <summary> /// 获取当前键的子键,用cRegKey对象保存 /// </summary> /// <param name="key"></param> /// <returns></returns> internal static List <cRegKey> GetSubKeys(RegistryKey key) { // 获取父节点的子节点数目 int subKeyCount = key.SubKeyCount; // 如果父节点下没有子节点,就返回一个空cRegKey对象 if (subKeyCount.Equals(0)) { return(new List <cRegKey>()); } // 根据子节点数目创建对象集合 List <cRegKey> subKeys = new List <cRegKey>(subKeyCount); // 保存子节点名称字符串集合,用于遍历操作 string[] subKeyNames = key.GetSubKeyNames(); // 遍历父节点的子节点集合,填充到subKeys集合中 for (int i = 0; i < subKeyNames.Length; i++) { try { string keyName = subKeyNames[i]; cRegKey item = new cRegKey(keyName, key.OpenSubKey(keyName)); subKeys.Add(item); } catch { } } return(subKeys); }
/// <summary> /// 删除VALUE方法 /// </summary> /// <param name="key"></param> /// <param name="value"></param> /// <returns></returns> internal static bool DeleteValue(string key, string value) { try { cRegKey regKey = cRegKey.Parse(key, true); regKey.Key.DeleteValue(value, false); } catch { return(false); } return(true); }
/// <summary> /// 添加KEY到TreeView中 /// </summary> /// <param name="parentNode"></param> /// <param name="subKey"></param> internal static void AddKeyToTree(TreeNode parentNode, cRegKey subKey) { RegistryKey key = subKey.Key; // 根据子节点属性来创建一个新的节点 TreeNode newNode = CreateNode(key.Name, subKey.Name, key); parentNode.Nodes.Add(newNode); // 如果子节点下游子节点的话,就先填充一个空节点 if (key.SubKeyCount > 0) { newNode.Nodes.Add(CreateNode()); } }
/// <summary> /// 删除KEY方法 /// </summary> /// <param name="key"></param> /// <returns></returns> internal static bool DeleteKey(string key) { try { cRegKey child = cRegKey.Parse(key); cRegKey parent = cRegKey.Parse(child.Parent, true); parent.Key.DeleteSubKeyTree(child.Name); } catch { return(false); } return(true); }