Die Schleife wird das erste mal korrekt durchlaufen (Datei wird korrekt kopiert und lokal gelöscht), beim zweiten mal immer Absturz,
und zwar genau bei der Anweisung nach ShowMessage('#');
except wird nicht durchlaufen.
Das weist ja eher darauf hin, daß du dir etwas beim ersten Durchlauf zerschießt.
Warum? Weil du behauptest, daß es beim ersten Mal funktioniert. Für die Serverseite oder das lokale Betriebssystem ist aber "das erste Mal" schon beim zweiten Test deines Programms nicht mehr das erste Mal! Ein
AV-Filter könnte natürlich infrage kommen, da er bspw. auf Prozeßebene agieren könnte. Dann wäre aber das Durchlassen der ersten Datei eine Sicherheitslücke und ein solcher Scanner sollte gemieden werden.
Der Vollständigkeit halber: ich arbeite seit nunmehr zehn Jahren bei einem
AV-Hersteller und bin selbst in der Entwicklung und Wartung des Dateisystemfiltertreibers tätig. Es handelt sich dabei nicht um Trend Micro.
Es sieht so aus als ob das nur bei .pdf-Dateien passiert, da an anderer Stelle mit ähnichem Code nicht pdf dateien problemlos verarbeitet werden.
Und mit
gleichem Code? Parametrisiere doch einmal deine Funktion und übergib die Maske der zu kopierenden Dateiendungen. Es interessiert für das Debuggen nämlich nicht, ob es mit
ähnlichem Code funktioniert, sondern nur ob es mit
gleichem Code funktioniert. Abgesehen davon erlaubt dir die Parametrisierung aus zwei Funktionen mglw. eine zu machen.
Was kann man tun, ausser den Virenscanner für .pdf zu deaktivieren?
Anderen
AV-Scanner einsetzen? Ernsthaft, es gibt kaum etwas was du im Usermode machen kannst, was den Scanner jucken würde. Üblicherweise wird schon das Öffnen der Datei abgefangen. Zugegeben, bei CopyFile siehst du davon nix, aber intern passiert da dennoch ein CreateFile usw.
In einigen Fällen wird auch das Schließen der Datei abgefangen. Kommt aber auf das exakte Szenario an.
Übrigens würde dir jeder normale
AV-Scanner ein "Zugriff verweigert" liefern, was noch immer keinen Absturz nach sich zöge, es sei denn du reagiertest darauf nicht adäquat.
Hallo,
ein Virenscanner kann schon dafür sorgen,
dass das Programm abschmiert.
Das sind aber schon sehr grenzwertige Bedingungen, die dazu erfüllt sein müssen. Zumeist würde ich dann auch eine Zeitüberschreitung oder ähnliches erwarten (bspw. weil der Scan länger dauert). Da wäre dann auch interessant ob der lokale Scanner den Scan erledigt oder ob die Serverseite das macht. Da es nicht explizit angegeben ist, würde ich annehmen, daß es lokal gemacht wird - für jegliche Netzwerkpfade. Auch daß die Gegenseite etwas macht, womit CopyFile nicht klarkommt, ist unwahrscheinlich. Wenn die Gegenseite Windows oder Samba ist, würde ich es nahezu kategorisch ausschließen.
Mich würde noch interessieren was diese mysteriöse Funktion `ForceDirectories` macht.
Und dann noch was auf der Gegenseite läuft. Windows? Samba auf einem Linux?
Schonmal probiert das Programm mit procdump.exe zu starten und diesem aufzutragen bitte einen Minidump zu erstellen? Dann könnte man ja mindestens den Call-Stack sehen, auch wenn die Symbole von Delphi bekanntlich nicht kompatibel sind mit Microsoft's Debuggern.