Einzelnen Beitrag anzeigen

AScomp

Registriert seit: 26. Okt 2002
Ort: Stuttgart
28 Beiträge
 
Delphi XE Professional
 
#1

Microsoft VSS (Volumenschattenkopien)

  Alt 14. Mär 2019, 18:09
Hallo zusammen,

in "Rathlevs Rummelkiste" findet sich u.a. der Quellcode zur Erstellung von Schattenkopien (VSS) mit Delphi:

http://www.rathlev-home.de/tools/progtools.html

Code:
function CreateSnapshot(): Boolean;
var
  VssThread: TVssThread;
  sDeviceName: String;
begin
     result := false;

     try
        try
           VssThread := CreateVssThread('C:\', true);
           with VssThread do begin
                LogFilename := 'VssLog.txt';
                WriteLog:=true;
                //OnStatusMessage:=ShowVssStatus;
                Resume;
                WriteLineToLog('Creating a Volume Shadow Copy: '+DateTimeToStr(Now));
                repeat
                      Sleep(10);
                      Application.ProcessMessages;
                until Done;
                if Success then begin
                   SaveBackupComponentsDocument('VssBackupDoc.xml');
                   sDeviceName := ShadowDeviceName;
                end else begin
                   WriteLineToLog(sLineBreak+'Snapshot creation failed');
                   FreeAndNil(VssThread);
                   exit;
                end;
           end;
        except
           exit;
        end;

        result := true;

     finally
        if assigned(VssThread) then begin
           try
              VssThread.DeleteShadowCopy;
           finally
              FreeAndNil(VssThread);
           end;
        end;
     end;
end;
Ich habe den Quellcode unter Delphi 10 auch problemlos zum Laufen gebracht. Nicht so aber unter Delphi XE. Das Problem ist, dass die Funktion InitializeForBackup einen Fehler wirft:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EOleSysError mit der Meldung 'TVolumeShadowCopy.Initialize:VssBackupComponents. InitializeForBackup (VSS: an unexpected error was encountered)' aufgetreten.
---------------------------

Das liegt wohl daran, dass ich unter Delphi XE eine 32 Bit-Anwendung erstelle und versuche, von einem 64 Bit-System einen Snapshot zu erstellen.

Ist das generell nicht möglich oder habe ich anderswo einen Fehler? Ich müsste doch eigentlich auch aus einer 32 Bit-Anwendung heraus einen Snapshot erstellen können!

Vielen Dank!
Viele Grüße,

Andy Ströbel

Geändert von AScomp (14. Mär 2019 um 18:18 Uhr)
  Mit Zitat antworten Zitat