後で変更を比較するために使用できるように、レジストリのすべてを文字列形式でツリー構造に取り込もうとしています。これまでのところ、レジストリ内のサブキーがいくつの子を持つことになるかについて確信が持てないため、実際にツリー構造に子を動的に追加することで行き詰まりました! または、それが持つ値の数なので、子が何人になるかを知らなくても、ツリー構造を動的に設定できる必要があります。
これまでのところ、私はこれを持っています:
private void buildRegistryListTreeFromScratch(string[] rootSubs) {
//The rootSubs argument is the first layer of subkeys directly underneath the root keys
RegistryKey rootKey = Registry.CurrentUser;
registryTreeTracker.Name = "Current User";
for (int i = 0; i < rootSubs.Length; i++) {
registryTreeTracker.Children.Add(new RegistryTreeNode(rootSubs[i]));
}
for (int i = 0; i < rootSubs.Length; i++) {
RegistryKey selectedKey = rootKey.OpenSubKey(rootSubs[i]);
if (selectedKey.SubKeyCount > 0) {
subKeyBelow(rootSubs[i]);
}
}
}
private void subKeyBelow(string path) {
RegistryKey rootKey = Registry.CurrentUser;
RegistryKey selectedKey = rootKey.OpenSubKey(path);
for (int i = 0; i < registryTreeTracker.Children.Count; i++){
if (registryTreeTracker.Children[i].Name == path) {
registryTreeTracker.Children[i] ... //This is the impasse I have reached
}
}
}
オブジェクト registryTreeTracker に使用しているクラスは、これに関連する質問で Daniel Hilgarth から提供されたクラスであり、その定義は次のとおりです。
public class RegistryTreeNode {
private readonly List<RegistryTreeNode> _children = new List<RegistryTreeNode>();
public RegistryTreeNode(string name, params RegistryTreeNode[] children) {
Name = name;
_children.AddRange(children);
}
public List<RegistryTreeNode> Children {
get {
return _children;
}
}
public string Name {
get;
set;
}
}