Esta función es igual a la que uso, pero sólo me funciona para el backup, para el restore no funciona porque no espera a que acabe.
A la hora de lanzarlo uso
Código Delphi
[-]resultado := WinExecAndWait32(CadenaBackupCopia,1);
en lugar de
Código Delphi
[-]resultado := WinExecAndWait32(CadenaBackupCopia,SW_HIDE);
supongo que no será por esa diferencia