6

我有 1 个 REG_MULTI_SZ 类型的注册表项。此条目中已包含一些字符串。

现在我想通过使用 .net 类向它添加 1 个字符串RegistryKey。这个类有方法key.SetValue(string,string)。但是当我使用这种方法时,它会删除所有已经存在的字符串,然后插入新字符串,简而言之,它会覆盖。我不想触摸已经存在的字符串,只想在最后添加新字符串。任何人都知道我们如何在 C# 中做到这一点。

4

3 回答 3

11

对于多字符串值,我会这样做。

key.SetValue("MultipleStringValue", new string[] {"One", "Two", "Three"});

如果它是一个单一的值,那么正如沃尔夫冈所说,你应该阅读现有的并附加。

于 2012-07-24T11:36:10.470 回答
4

根据上面 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());

显然,您希望围绕这个小样本进行一些防御性编码 - 确保您实际上得到了一个字符串数组,等等......

于 2012-07-24T13:10:09.260 回答
1

没有其他办法。您必须先读取现有字符串,然后将您的字符串附加到该字符串并写回新的连接字符串。

于 2012-07-24T11:34:46.977 回答