6

タイプ REG_MULTI_SZ のレジストリ エントリが 1 つあります。このエントリには、すでに何らかの文字列が含まれています。

.net class を使用して、さらに 1 つの文字列を追加したいと思いますRegistryKey。このクラスにはメソッドがありkey.SetValue(string,string)ます。しかし、このメソッドを使用すると、既に存在するすべての文字列が削除され、新しい文字列が挿入されます。つまり、上書きされます。既に存在する文字列には触れたくありません。最後に新しい文字列を追加したいだけです。C#でこれを行う方法を知っている人は誰でも。

4

3 に答える 3

11

複数の文字列値の場合、これを行います。

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

単一の値の場合、Wolfgang が述べたように、既存のものを読み取って追加する必要があります。

于 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 に答える