![]() |
MoveFile hinterlässt Zombie
Hallo,
ich bin auf einen neuen Rechner umgezogen (alles neu aufgesetzt, gleiches Win10 Pro wie auf dem vorherigen) und habe seitdem einige spukhafte Effekte. Einer davon ist, dass MoveFile einer bmp-Datei (erzeugt mit SaveToFile einer TImage) einen Zombie hinterlässt: eine Datei, die sich nicht löschen lässt und mir als Admin die Information über Besitzer und Zugriffsrechte verweigert. Nach System-Restart ist sie weg. Den MoveFile erledigt eine interne Funktion, die noch für eine ganze Reihe von Dateien (pdf, txt) aufgerufen wird, was problemlos funktioniert (Auch die Ziel-bmp-Datei wird erzeugt). Eine Zeit lang hat dieser etwas brachiale Workaround mit dem DeleteFile geholfen, aber jetzt hat es mich eingeholt, der Zombie triumphiert.
Delphi-Quellcode:
Die Datei wird erzeugt mit:
function File_Move(const cmd: string): boolean;
begin Result := MoveFile(PChar(src), PChar(dst)); if not Result then begin s := SysErrorMessage(GetLastError); MessageDlg(Format(_MSG_ERR, [cmd, src, dst, s]), mtError, [mbOK], 0); end else DeleteFile(src); // ggf. Zombie töten end; end;
Delphi-Quellcode:
Es muss am System liegen, denn auf dem bisherigen System funktioniert diese Anwendung rückstandsfrei.
img.Picture.SaveToFile(fn);
(Ein anderer Spuk ist übrigens, dass ich bei W32-Aufrufen das Ergebnis im falschen Zeichensatz zurückbekomme, da mache ich aber einen gesonderten Thread auf, weil mir das, was ich dazu bisher gefunden habe, nicht geholfen hat.) Hat jemand eine Idee? |
AW: MoveFile hinterlässt Zombie
Bekommst du ein Minimalbeispiel hin welches das nachstellt?
An MoveFile(..) an sich ist ja nichts böses. Das von dir beschriebene Verhalten kenne ich nur wenn man das Flag
Delphi-Quellcode:
bei
MOVEFILE_DELAY_UNTIL_REBOOT
![]() PS: Welche Delphi-Version ist es? Ist sie evtl. so alt dass sie z.B. noch von der Schwachstelle in der BMP-Verarbeitung betroffen ist und ein Virenscanner hält da evtl. noch länger seinen Finger drauf weil ihm das fischig erscheint? ![]() ![]() => ![]() |
AW: MoveFile hinterlässt Zombie
Danke für die schnellen Tipps (das Flag ist interessant...:).
Eine Minianwendung hatte ich erstellt, ohne den Effekt erzeugen zu können. Ich hatte sie jetzt etwas weiter getrieben, und plötzlich hatte ich Zombies, dann habe ich sie noch weiter getrieben und die Zombies waren wieder weg. Ich werde das morgen hoffentlich verlässlich reproduzieren können. Die Delphi Version ist 10.1 Berlin. |
AW: MoveFile hinterlässt Zombie
Kann es sein, dass irgendein Programm die Datei noch geöffnet hat?
|
AW: MoveFile hinterlässt Zombie
Hatte ich auch mal. Da hat bei mir ein Virenscanner dazwischen gefunkt.
|
AW: MoveFile hinterlässt Zombie
So, das Problem ist gefixt.
Es hat zwar nicht unmittelbar etwas mit Delphi-W32-Programmierung zu tun, aber die Lösung ist vielleicht von Interesse, weil es jeden treffen kann. Der Zombie-Effekt kann auftreten, wenn Bild-Dateien (bei mir bmp und jpg) verschoben (gelöscht) werden, die auf einem lokalen Laufwerk liegen (SSD und HDD). Nachdem nämlich nicht nur meine Anwendung, sondern auch XnView und sogar der Explorer solche Zombies erzeugt haben, war zu vermuten, dass ein dritter Prozess diesen Effekt hervorruft. Bei mir war es "Reason Core Security Complete Protection", von dem eine Testversion in meiner Konfiguration gelandet war, mit welchem Mutterschiff auch immer. Diese ungebetenen Risiko-Vermeider sind manchmal schlimmer als das potenzielle Risiko.:evil: Danke nochmal für Eure Mithilfe. |
AW: MoveFile hinterlässt Zombie
Ich hoffe bei dessen Installation war nicht zufällig "ein Haken falsch gesetzt". :stupid:
Zitat: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 Uhr. |
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