Hallo,
das Problem mit dem Erstellen von Schattenkopien über einen Dienst konnte ich lösen.
Jetzt stellt sich aber ein Problem mit den ermittelten Pfadangaben.
Und zwar möchte ich eine Logdatei anlegen lassen, in der die verschiedenen Aktivitäten protokolliert werden sollen.
Delphi-Quellcode:
const
cMyServiceLog = 'MyService\MyService.log';
procedure TMyService.Log(LogText: String);
begin
sLogPath := GetEnvironmentVariable('LOCALAPPDATA') + '\' + cMyServiceLog;
//System.IOUtils.TFile.AppendAllText('C:\Users\amigage\AppData\Local\MyService\log.log', DateTimeToStr(Now) + ' ' + sLogPath + sLineBreak); // spätere zweite Logdatei
if not DirectoryExists(ExtractFilePath(sLogPath)) then
ForceDirectories(ExtractFilePath(sLogPath));
System.IOUtils.TFile.AppendAllText(sLogPath, DateTimeToStr(Now) + ' ' + LogText + sLineBreak)
end;
Ich erhalte nur eine Meldung, nachdem der Service installiert wurde, die anderen EventsLogs werden ignoriert.
Delphi-Quellcode:
procedure TMyService.ServiceCreate(Sender: TObject);
begin
Log('BFU Service created');
end;
Also habe ich eine LogDatei für die Variable sLogPath angelegt (Kommentar bei Funktion Log() entfernen).
Und siehe da, hier finden sich ganz seltsame Pfadangaben.
Code:
19.12.2017 15:09:22 C:\Users\amigage\AppData\Local\MyService\MyService.log
19.12.2017 15:09:28 C:\WINDOWS\system32\config\systemprofile\AppData\Local\MyService\MyService.log
19.12.2017 15:09:28 C:\WINDOWS\system32\config\systemprofile\AppData\Local\MyService\MyService.log
19.12.2017 15:13:50 C:\WINDOWS\system32\config\systemprofile\AppData\Local\MyService\MyService.log
Warum ist das so? Ist das ein Bug oder kann ich hier nicht die gewohnten Funktionen GetEnvironmentVariable() und System.IOUtils.TPath.Combine() anwenden?