1

誰かがレジストリのあるサブカテゴリのコンテンツを別のサブカテゴリにコピーする最良の方法を提案できますか?

たとえば、次のようなものがあります。

HKEY_CURRENT_USER.Software.MyProgram.ver_1 

関数チェックを実行すると、ver_2 がない場合は、...MyProgram.ver_2 を作成し、そこに ...MyProgram.ver_1 のすべてのコンテンツをコピーします。

4

3 に答える 3

7

拡張方法:

public static void CopyTo(this RegistryKey src, RegistryKey dst)
{
    // copy the values
    foreach (var name in src.GetValueNames())
    {
        dst.SetValue(name, src.GetValue(name), src.GetValueKind(name));
    }

    // copy the subkeys
    foreach (var name in src.GetSubKeyNames())
    {
        using (var srcSubKey = src.OpenSubKey(name, false))
        {
            var dstSubKey = dst.CreateSubKey(name);
            srcSubKey.CopyTo(dstSubKey);
        }
    }
}

このように呼び出されます:

var ver1 = Registry.CurrentUser.OpenSubKey(@"Software\MyProgram\ver_1");
var ver2 = Registry.CurrentUser.OpenSubKey(@"Software\MyProgram\ver_2");
ver1.CopyTo(ver2);
于 2013-09-12T18:47:50.963 に答える
0

この質問は、「レジストリの読み取り/書き込み方法」の質問に答えており、それに基づいて次のことができます。

  • 「ver_2」キーを読む
  • 「ver_2」が存在しない場合は作成する
  • 「ver_2」が上に存在しなかった場合、「ver_1」キーの各値を読み取り、「ver_2」の下に同じ値を書き込みます

基本的に、値を読み取り、書き込み、別の値を読み取り、書き込み、というように繰り返します。

于 2012-09-04T11:40:12.553 に答える