誰かがレジストリのあるサブカテゴリのコンテンツを別のサブカテゴリにコピーする最良の方法を提案できますか?
たとえば、次のようなものがあります。
HKEY_CURRENT_USER.Software.MyProgram.ver_1
関数チェックを実行すると、ver_2 がない場合は、...MyProgram.ver_2 を作成し、そこに ...MyProgram.ver_1 のすべてのコンテンツをコピーします。
拡張方法:
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);
この質問は、「レジストリの読み取り/書き込み方法」の質問に答えており、それに基づいて次のことができます。
基本的に、値を読み取り、書き込み、別の値を読み取り、書き込み、というように繰り返します。