给定注册表路径"\ a\b\c\d",我想为键'd'添加一个值.问题是 - 我不知道a,b或c是否存在,并且我希望代码在它们不存在时生成它们.有没有快速的方法(使用一些我没见过的.NET方法)来做到这一点?我可以通过注册表键迭代的路径并使用OpenSubKey/GetValue/SetValue方法来执行该过程,但是如果可以的话,我希望避免重新发明轮子...
注意:我正在寻找的行为与运行.reg文件所获得的行为相同(它将创建必要的子键).
谢谢,
阿萨夫
Jam*_*ing 15
我不知道你可以做一个内置的单一电话.但是,您不需要调用OpenSubKey/GetValue等.调用CreateSubKey将创建新密钥,或者打开现有密钥(如果存在).
RegistryKey regKey = startingRootKey;
string[] RegKeys = pathToAdd.split('\'');
foreach (string key in RegKeys) {
regKey = regKey.CreateSubKey(key);
}
regKey.SetValue("ValueName", "Value");
Run Code Online (Sandbox Code Playgroud)
忽略那里的额外',我需要它来使格式看起来正确.??
此外,确保在执行注册表项添加时测试异常...有很多安全性和路径方面可能出错.陷阱的例外列表在这里.
EDIT
I'm making this too complicated! I just tested... the following will do exactly what you want:
RegistryKey regKey = startingRootKey;
regKey = regKey.CreateSubKey(@"a\b\c\d");
regKey.SetValue("ValueName", "Value");
regKey.Close();
Run Code Online (Sandbox Code Playgroud)
It's smart enough to parse the nested path. Just make sure you have the @ symbol, or it will treat the string is as if it were escaped.