我有 1 个 REG_MULTI_SZ 类型的注册表项。此条目中已包含一些字符串。
现在我想通过使用 .net 类向它添加 1 个字符串RegistryKey
。这个类有方法key.SetValue(string,string)
。但是当我使用这种方法时,它会删除所有已经存在的字符串,然后插入新字符串,简而言之,它会覆盖。我不想触摸已经存在的字符串,只想在最后添加新字符串。任何人都知道我们如何在 C# 中做到这一点。
对于多字符串值,我会这样做。
key.SetValue("MultipleStringValue", new string[] {"One", "Two", "Three"});
如果它是一个单一的值,那么正如沃尔夫冈所说,你应该阅读现有的并附加。
根据上面 Vinayak 的回答,如果你想附加一个值,你需要读入现有的值并使用它。
所以:
var registryValue = key.GetValue("KeyName");
获取现有值,该值应返回 REG_MULTI_SZ 的字符串数组。然后只需附加新值(或换出现有值,如果您喜欢的话)。您可以以任何您喜欢的方式执行此操作 - 从数组创建一个列表并向其添加一个新值,创建一个带有循环的新字符串数组,使用 IEnumerable.Concat...
var stringList = new List<string>(registryValue as string[]);
stringList.Add("NewValue");
key.SetValue("KeyName", stringList.ToArray());
显然,您希望围绕这个小样本进行一些防御性编码 - 确保您实际上得到了一个字符串数组,等等......
没有其他办法。您必须先读取现有字符串,然后将您的字符串附加到该字符串并写回新的连接字符串。