AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Virenscanner killt App

Ein Thema von Ykcim · begonnen am 25. Nov 2024 · letzter Beitrag vom 25. Nov 2024
Antwort Antwort
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
826 Beiträge
 
Delphi 10.4 Sydney
 
#1

Virenscanner killt App

  Alt Gestern, 15:44
Hallo Zusammen,

wir haben gerade ein Problem mit einem eigenen Programm, dass immer mal wieder bei einer bestimmten Procedure vom VirenScanner gekillt wird. In dieser Procedure werden vorab von dem Benutzer xml- Files und dazugehörige ZIP-Archive in einem Ordner gespeichert. Die Procedure führt folgende Schritte aus:
1. Entpacken des ZIP-Archivs an einen bestimmten Ort
2. Löschen des ZIP-Archivs
3. Öffnen des xml-Files und Änderung von zwei Werten
4. Speichern des geänderten xml-Files an einem anderen Ort
4. Löschen des ursprünglichen xml-Files

So sehen die Proceduren aus:

ZIP-File entpacken:
Delphi-Quellcode:
function TLogic.ExctractZIP(ZipPfad, ExtractPfad: string): boolean;
var ZFile: TZipFile;
begin
   Try
      ZFile:= TZipFile.Create;
      Try
         ZFile.Open(ZipPfad, zmRead);
         ZFile.ExtractAll(ExtractPfad);
         Result:= true;
      Finally
         ZFile.Free;
      End;
   Except
      On E: Exception do begin
         MessageDlg('Die Datei ' + ZipPfad + ' konnte nicht entpackt werden. Message: ' + E.Message + ' Bitte manuell eingreifen und den Administrator informieren.', mtError, [mbOK], 0);
         Result:= false;
      end;
   End;
end;
xml-File verändern und speichern
Delphi-Quellcode:
function TLogic.XMLEdit(xmlPfad: string; TargetPfad: string): Boolean;
var WmDKntn: IXMLNode;
      XMLDcmnt: IXMLDocument;
      NwVlDateien, NwVlWF_Name, NwFlNm: string;
begin
   Try
      if TargetPfad[Length(TargetPfad)] <> '\then begin
         TargetPfad:= TargetPfad + '\';
      end;
      XMLDcmnt:= LoadXMLDocument(xmlPfad);
      NwFlNm:= ChangeFileExt(ExtractFileName(xmlPfad), '.xml');
      WmDKntn:= XMLDcmnt.DocumentElement;
      NwVlDateien:= StringReplace(WmDKntn.ChildNodes.FindNode('Dateien').ChildNodes.FindNode('Dateiname').NodeValue, '.zip','.pdf',[rfIgnoreCase, rfReplaceAll]);
      NwVlWF_Name:= StringReplace(WmDKntn.ChildNodes.FindNode('WF_Name').ChildNodes.FindNode('WF_Name').NodeValue, '.zip','.pdf',[rfIgnoreCase, rfReplaceAll]);
      WmDKntn.ChildNodes.FindNode('Dateien').ChildNodes.FindNode('Dateiname').NodeValue:= NwVlDateien;
      WmDKntn.ChildNodes.FindNode('WF_Name').ChildNodes.FindNode('WF_Name').NodeValue:= NwVlWF_Name;
      XMLDcmnt.SaveToFile(TargetPfad + ChangeFileExt(NwVlDateien, '.xml'));
      Result:= true;
   Except
      On E: Exception do begin
         MessageDlg('Die Datei ' + xmlPfad + ' konnte nicht editiert werden. Message: ' + E.Message + ' Bitte manuell eingreifen und den Administrator informieren.', mtError, [mbOK], 0);
         Result:= false;
      end;
   End;
end;
Ursprungsdatei löschen
DeleteFile(FList[I]); Hat jemand eine Idee, was ich tun muss, dass der Virenscanner die Procedure akzeptiert?

Oftmals läuft das Programm problemlos durch, aber manchmal schnappt der Virenscanner zu.

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#2

AW: Virenscanner killt App

  Alt Gestern, 16:27
Warum extrahierst du die XMLs erst auf die Festplatte?

Extrahiere sie in einen Stream und aus dem Stream (z.B. TStringStream) wird die XML innerhalb des Programms in die XML-Komponente geladen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
436 Beiträge
 
Delphi 12 Athens
 
#3

AW: Virenscanner killt App

  Alt Gestern, 16:28
Das kommt natürlich primär darauf an, ob du den Virenscanner oder deine Procedure anpassen willst. Insgesamt mögen Virenscanner diese zahlreichen Dateioperationen überhaupt nicht. Du könntest mal probieren,

a) Alle Zipdateien erst am Ende mit einer einzigen Aktion (Delete *.zip) zu löschen, statt jede ZIP-Datei einzeln
b) ich benutze z.B. ZipForge. Statt die xml-Datei in eine Datei zu extrahieren, würde ich sie damit als Stream aus der zip-Datei ins XML-Doc laden, manipulieren und dann speichern. Ggf. kann TZipFile auch in einen Stream statt in eine Datei speichern.
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
826 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Virenscanner killt App

  Alt Gestern, 17:12
Hallo Zusammen,

ich habe mich etwas unverständlich ausgedrückt.

Aus dem Internet wird eine xml-Datei und ein ZIP-Archiv heruntergeladen. Das Ganze passiert mehrfach, aber es gehören immer eine xml-Datei und ein ZIP-Archiv zusammen. Die xml-Datei ist aber nicht in dem ZIP-Archiv. In dem ZIP-Archiv ist eine PDF-Datei. (Konstrukt vom Kunden) Daher extrahiere ich die xml-Datei gar nicht, sondern sie wurde vorab von einem FTP-Server heruntergeladen, wie auch das ZIP-Archiv, in dem die PDF-Datei steckt...

Die entpackte PDF-Datei und die xml-Datei müssen an unterschiedlichen Speicherorten auf unseren Servern gespeichert werden. In der xml-Datei ist ein Verweis zu dem ZIP-Archiv, welchen ich ändere, sodass der Verweis auf die entpackte PDF-Datei zeigt.

Ich kann die xml-Datei nicht unbearbeitet in den Zielordner legen, denn dann würde das ERP-System diese sofort verarbeiten und es würde im ERP-System knallen.

Das Löschen könnte ich zusammenfassen, dass ich alle Dateien aus dem Download-Ordner zusammen lösche. Ich habe es einzeln gemacht, weil ich jedes Mal nur nach Erfolgsmeldung lösche. Das könnte ich dann nicht mehr machen und müsste sozusagen blind alles löschen...

Ich kann leider nicht sagen, bei welcher Aktion der Virenscanner zuschlägt.

Irgendwie ist die Situation unbefriedigend...

LG Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
680 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Virenscanner killt App

  Alt Gestern, 19:45
Ich kann leider nicht sagen, bei welcher Aktion der Virenscanner zuschlägt.
Nach und/oder vor jeder Aktion einen Logeintrag in Textdatei oder Windows Events schreiben. Schon kannst Du sehen welches die letzte Aktion war.

Generell ist das aber schon ein komisches Verhalten für einen Vierenscanner. Veränderst du auch die PDF Datei?
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz