给定注册表路径“\a\b\c\d”,我想向键“d”添加一个值。问题是——我什至不知道 a、b 或 c 是否存在,如果它们不存在,我希望代码生成它们。有没有一种快速的方法(使用一些我没见过的.NET 方法)来做到这一点?我可以通过注册表项进行迭代并使用 OpenSubKey/GetValue/SetValue 方法来执行该过程,但如果可以的话我想避免重新发明轮子...
注意:我正在寻找的行为与运行 .reg 文件所获得的行为相同(它将创建必要的子项)。
谢谢,
阿萨夫
最佳答案
我不知道您可以通过内置的单个调用来执行此操作。但是,您不需要调用 OpenSubKey/GetValue 等。调用 CreateSubKey
将创建一个新 key ,或者打开现有 key (如果存在)。
RegistryKey regKey = startingRootKey;
string[] RegKeys = pathToAdd.split('\'');
foreach (string key in RegKeys) {
regKey = regKey.CreateSubKey(key);
}
regKey.SetValue("ValueName", "Value");
忽略那里多余的 ',我需要它来使格式看起来正确。 ??
此外,请确保在添加注册表项时测试异常情况……有很多安全和路径方面的问题可能会出错。陷阱的异常(exception)列表是 here .
编辑
我把这件事想得太复杂了!我刚刚测试过...以下将完全按照您的要求执行:
RegistryKey regKey = startingRootKey;
regKey = regKey.CreateSubKey(@"a\b\c\d");
regKey.SetValue("ValueName", "Value");
regKey.Close();
它足够智能来解析嵌套路径。只需确保您有 @ 符号,否则它会将字符串视为已转义。
关于c# - 如何在 C# 中添加嵌套的注册表项/值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4206963/