Einzelnen Beitrag anzeigen

amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
270 Beiträge
 
Delphi 11 Alexandria
 
#1

Dienst und Pfadangaben

  Alt 19. Dez 2017, 14:49
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?
  Mit Zitat antworten Zitat