繁体   English   中英

如何在C#中添加嵌套的注册表键/值?

[英]How to add nested Registry Key/Value in C#?

给定注册表路径“\\ a \\ b \\ c \\ d”,我想为键'd'添加一个值。 问题是 - 我不知道a,b或c是否存在,并且我希望代码在它们不存在时生成它们。 有没有快速的方法(使用一些我没见过的.NET方法)来做到这一点? 我可以通过注册表键迭代的路径并使用OpenSubKey / GetValue / SetValue方法来执行该过程,但是如果可以的话,我希望避免重新发明轮子...

注意:我正在寻找的行为与运行.reg文件所获得的行为相同(它将创建必要的子键)。

谢谢,

阿萨夫

我不知道你可以做一个内置的单一电话。 但是,您不需要调用OpenSubKey / GetValue等。调用CreateSubKey将创建一个新密钥,或者打开现有密钥(如果存在)。

RegistryKey regKey = startingRootKey;
string[] RegKeys = pathToAdd.split('\'');
foreach (string key in RegKeys) {
    regKey = regKey.CreateSubKey(key);
}
regKey.SetValue("ValueName", "Value");

忽略那里的额外',我需要它来使格式看起来正确。 ??

此外,确保在执行注册表项添加时测试异常...有很多安全性和路径方面可能出错。 陷阱的例外列表在这里


编辑
我这太复杂了! 我刚刚测试过......以下内容将完全符合您的要求:

RegistryKey regKey = startingRootKey;
regKey = regKey.CreateSubKey(@"a\b\c\d");
regKey.SetValue("ValueName", "Value");
regKey.Close();

它足够聪明,可以解析嵌套路径。 只要确保你有@符号,否则它会将字符串视为已被转义。

我不认为有任何内置的东西,但在注册表路径上执行字符串拆分然后循环遍历它并在我的视图中执行CreateSubKey (而不是OpenSubKey因此它会创建缺少的部分)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM