All pastes #278495 Raw Edit

Someone

public text v1 · immutable
·published 2006-12-14 03:25 UTC
rendered paste body
procedure RegCopyKey(const SourceRootKey: Integer; const SourceSubKeyName: String; const TargetRootKey: Integer; const TargetSubKeyName: String; const Level: Integer);
var
  Keys: TArrayOfString;
  Names: TArrayOfString;
  ValueS: String;
  ValueD: Cardinal;
  I: Integer;
begin
  if RegGetValueNames(SourceRootKey, SourceSubKeyName, Names) then
    for I := 0 to GetArrayLength(Names)-1 do
      if RegQueryStringValue(SourceRootKey, SourceSubKeyName, Names[I], ValueS) then
        RegWriteStringValue(TargetRootKey, TargetSubKeyName, Names[I], ValueS)
      else if RegQueryMultiStringValue(SourceRootKey, SourceSubKeyName, Names[I], ValueS) then
        RegWriteMultiStringValue(TargetRootKey, TargetSubKeyName, Names[I], ValueS)
      else if RegQueryDWordValue(SourceRootKey, SourceSubKeyName, Names[I], ValueD) then
        RegWriteDWordValue(TargetRootKey, TargetSubKeyName, Names[I], ValueD)
      else if RegQueryBinaryValue(SourceRootKey, SourceSubKeyName, Names[I], ValueS) then
        RegWriteBinaryValue(TargetRootKey, TargetSubKeyName, Names[I], ValueS);

  if Level <= 0 then Exit;

  if RegGetSubkeyNames(SourceRootKey, SourceSubKeyName, Keys) then
    for I := 0 to GetArrayLength(Keys)-1 do
      RegCopyKey(SourceRootKey, SourceSubKeyName + '\' + Keys[I], TargetRootKey, TargetSubKeyName + '\' + Keys[I], Level-1);
end;