Delphi-PRAXiS
Seite 5 von 6   « Erste     345 6      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Volume Shadow Copy Service (https://www.delphipraxis.net/182752-volume-shadow-copy-service.html)

Hobbycoder 11. Mai 2018 07:48

AW: Volume Shadow Copy Service
 
Push*

generic 15. Mai 2018 13:21

AW: Volume Shadow Copy Service
 
Hast du auch für den neuen Thread CoInitialize aufgerufen?

Hobbycoder 15. Mai 2018 14:12

AW: Volume Shadow Copy Service
 
Danke generic.
Ein CoInitialize(nil) hat schon mal funktioniert ;-)

Hobbycoder 15. Mai 2018 15:22

AW: Volume Shadow Copy Service
 
Scheint soweit zu laufen.
Leider habe ich das Problem, dass in der Logdatei des VssThread HResult $80042302 angegeben wird, was dem Errorcode entspricht, den das VSS zurückgibt.
Code:
Starting snapshot creation for "D:"

Initializing IVssBackupComponents Interface ...
ERROR : COM call "TVolumeShadowCopy.Initialize:VssBackupComponents.InitializeForBackup" failed.
- Returned HRESULT = $80042302
- Error text: VSS: an unexpected error was encountered
ERROR : TVolumeShadowCopy.Initialize:VssBackupComponents.InitializeForBackup (VSS: an unexpected error was encountered)
Hat da noch jemand eine Idee zu? Die Webseiten, in denen empfohlen wird einige Dienste zu starten habe ich bereits durch.
Zielsysstem ist ein Windows Server 2012 R2. Schattenkopie erstellen über "vssadmin create shadow /for=D:" funktioniert fehlerfrei.

Hobbycoder 15. Mai 2018 18:20

AW: Volume Shadow Copy Service
 
Problem gelöst.

Letztere Fehlermeldung kam, weil ich das als Win32 compiliert hatte. Als Win64 läuft's.

DieDolly 23. Aug 2022 15:53

AW: Volume Shadow Copy Service
 
Sehr altes Thema, möchte aber gerne frage, ob das hier so richtig ist. Basis ist die VsToolkit-Demo.

Meine ganz einfache eigene Demo. Alles was ich nicht brauche ist raus. Es wird nur eine Datei kopiert (bei CopyFile).
Muss man das pro Datei aufrufen oder kann ich bei CopyFile 10 Dateien kopieren?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 s: string;
 VolumeShadowCopy: TVolumeShadowCopy;
 VolList: TStringList;
begin
 VolList := TStringList.Create;

 s := GetVolumeUniqueName(SetPathDelimiter('C:\'));
 if length(s) > 0 then
  VolList.Add(s);

 if VolList.Count > 0 then
  begin
   VolumeShadowCopy := TVolumeShadowCopy.Create;
   with VolumeShadowCopy do
    begin
     ListBox1.Items.Add('(Option: Create shadow copy set)');

     // Initialize the VSS client
     Initialize(VSS_CTX_BACKUP);
     // Create the shadow copy set
     CreateSnapshotSet(VolList);

     CopyFile('C:\Windows\explorer.exe', 'C:\explorer.exe', false);

     // Execute BackupComplete, except in fast snapshot creation
     if VssContext and VSS_VOLSNAP_ATTR_DELAYED_POSTSNAPSHOT = 0 then
      begin
       // Complete the backup
       // Note that this will notify writers that the backup is successful!
       // (which means eventually log truncation)
       if VssContext and VSS_VOLSNAP_ATTR_NO_WRITERS = 0 then
        BackupComplete(True);

       DeleteAllSnapshots;
      end;
     ListBox1.Items.Add('Snapshot creation done.');
    end;

   VolList.Free;
  end
 else
  ListBox1.Items.Add('Invalid volume');
end;

himitsu 23. Aug 2022 17:11

AW: Volume Shadow Copy Service
 
Nein.
https://docs.microsoft.com/en-us/win...nbase-copyfile

Außer du nutzt Alternativen, wie Copy von IFolder oder so.




Aber CopyFile mit diesem Pfad, wird doch auf die aktuelle Datei gehen und nicht auf den Snapshot, oder nicht? :gruebel:

DieDolly 23. Aug 2022 17:14

AW: Volume Shadow Copy Service
 
Verestehe nicht was hier an Copy verkehrt sein soll.

Falls du mich falsch verstanden hast: ich möchte mit einem CopyFile-Aufruf nicht 10 Dateien kopieren.

Meine Frage war:
darf ich an dieser Stelle überhaupt eine Datei kopieren
und
darf ich an dieser Stelle blöd ausgedrückt 10x hintereinander eine Datei kopieren

oder muss ich für jede einzelne Datei alles was drumherum ist erzeugen?

himitsu 23. Aug 2022 17:20

AW: Volume Shadow Copy Service
 
CopyFile kann nur eine Datei.
Mehrmals Copy für mehrere Dateien
oder ein anderes "Copy", was mehrere Dateien / File-Masks kann.


Und CopyFile wird hier auf die aktuellen Dateien gehen, denn es kennt den Snapshot ja garnicht.
Also anderes Copy, welchem man den Snapshot mitgibt, oder einen Pfad verwenden, welcher für den Snapshot steht.

Zitat:

for example, \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyX\ instead of C:\
https://stackoverflow.com/questions/...files-from-vss

DieDolly 23. Aug 2022 17:21

AW: Volume Shadow Copy Service
 
Siehe

Zitat:

Zitat von DieDolly (Beitrag 1510550)
Verestehe nicht was hier an Copy verkehrt sein soll.

Falls du mich falsch verstanden hast: ich möchte mit einem CopyFile-Aufruf nicht 10 Dateien kopieren.

Meine Frage war:
darf ich an dieser Stelle überhaupt eine Datei kopieren
und
darf ich an dieser Stelle blöd ausgedrückt 10x hintereinander eine Datei kopieren

oder muss ich für jede einzelne Datei alles was drumherum ist erzeugen?


Das heißt
Code:
C:\Verzeichnis1 == \\?\Volume{id}\Verzeichnis1
?

Ein simples CopyFile funktioniert so jedenfalls
Code:
CopyFile('\\?\Volume{id}\Windows\explorer.exe', 'explorer.exe', false);


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 Uhr.
Seite 5 von 6   « Erste     345 6      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz