Guardar la base de datos de registro del sistema

Este procedimiento permite guardar la base de datos del registro del sistema:

procedure TForm1.SaveRegister(iTimeOutMs: DWORD; sFileName : SHortString);
Var
  Ticks: DWord;
  StartInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
  Fin: Boolean;
Begin
  FillChar(StartInfo, SizeOf(StartInfo), #0);
  StartInfo.cb := SizeOf(StartInfo);
 
  If CreateProcess(Nil, PChar('regedit.exe /se ' +sFileName),
    Nil, Nil, False, 0, Nil, Nil, StartInfo, ProcessInfo) Then
  Begin
    ShowMessage('Guardando la BD... ');
    Ticks := GetTickCount;
    Fin := False;
 
    Repeat
      Case WaitForSingleObject(ProcessInfo.hProcess, 200) Of
        WAIT_OBJECT_0: Fin := True;
      End;
 
      Application.ProcessMessages; //Evita que la aplicacion se bloquee
      Sleep(250);
    Until (Fin) Or (GetTickCount - Ticks > iTimeOutMs);
 
    If (Fin = False) Then
      ShowMessage('TimeOut ! No se ha terminado correctamente... ')
    Else
      ShowMessage('Se ha guardado la BD. ')
  End else
    ShowMessage('Error al inciar el guardado de la BD ! ');
end;