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