public RegistryKeyFragment(string KeyPath) { string cummPath = null; string keyPath = KeyPath; while (keyPath.IsNullOrEmpty() == false) { var rv = RegistryKeyExt.SplitLeft(keyPath); var rootName = rv.Item1; keyPath = rv.Item2; cummPath = RegistryKeyExt.Combine(cummPath, rootName); var item = new FragmentKeyItem() { KeyPath = cummPath }; if (this.KeyPartRoot == null) { this.KeyPartRoot = item; } else { var lastChild = this.KeyPartRoot.LastChildDeep; lastChild.Children.Add(item); } } // from the full key of the fragment, list all the sub keys and values. if (this.KeyPartRoot != null) { var lastChild = this.KeyPartRoot.LastChildDeep; using (var rk = RegistryKeyExt.OpenRegistryKey(KeyPath)) { AddSubKeys(rk, lastChild); AddValues(rk, lastChild); } } }
protected override void FillChildren() { Children.Clear(); using (var regKey = RegistryKeyExt.OpenRegistryKey(this.KeyPath)) { bool isRoot = regKey.IsRegistryHive(); foreach (var keyName in regKey.GetSubKeyNames()) { using (var subKey = regKey.OpenSubKey(keyName)) { var model = new FragmentKeyItem() { Parent = this, HasChildrenMarker = CollectionMarker.HasChildrenMarker }; Children.Add(model); } } } }
/// <summary> /// FragmentKeyItems do not contain expandable markers. /// </summary> protected override void FillExpandableMarker() { return; #if skip using (var regKey = RegistryKeyExt.OpenRegistryKey(this.KeyPath)) { if (regKey != null) { if (regKey.GetSubKeyNames().Count() > 0) { var model = new FragmentKeyItem() { Parent = this, HasChildrenMarker = CollectionMarker.HasChildrenMarker }; Children.Add(model); } } } #endif }