Hallo,
ich möchte gerne die Ereignisanzeige von Windows in einen temporären Ordner kopieren. Installiert ist Vista 32 Bit und Delphi 2007 Pro. Mein Programm besitzt Adminrechte. Nun verwende ich folgenden Code dafür:
Delphi-Quellcode:
var Quelldatei, Zieldatei : TFileStream;
begin
Quelldatei:=TFileStream.Create('C:\Windows\system32\winevt\Logs\Application.evtx', fmOpenRead);
try
Zieldatei:=TFileStream.Create('Application.evtx', fmCreate or fmShareDenyRead);
try
Zieldatei.CopyFrom(Quelldatei, Quelldatei.Size);
finally
FreeAndNil(Zieldatei);
end;
finally
FreeAndNil(Quelldatei);
end;
end;
Leider liefert gleich die erste Zeile eine
Exception:
Im Projekt CopyTest.exe ist eine Exception der Klasse EFOpenError mit der Meldung 'Datei C:\Windows\system32\winevt\Logs\Application.evtx kann nicht geöffnet werden. Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird' aufgetreten.
Woran kann das liegen? Die Ereignisanzeige ist nicht offen und ich kann die Datei mit dem Windows-Explorer oder auch mit dem Total Commander problemlos kopieren. Nur mein Programm schafft das trotz Adminrechten nicht...