AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Dienst und Pfadangaben

Ein Thema von amigage · begonnen am 19. Dez 2017 · letzter Beitrag vom 19. Dez 2017
Antwort Antwort
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
231 Beiträge
 
Delphi 10.4 Sydney
 
#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
Delphi.Narium

Registriert seit: 27. Nov 2017
1.376 Beiträge
 
Delphi 7 Professional
 
#2

AW: Dienst und Pfadangaben

  Alt 19. Dez 2017, 15:01
Lektüre zum Thema:

https://social.technet.microsoft.com...w7itproinstall

https://serverfault.com/questions/93...l-system-accou

Demnach ist der ersten Eintrag im Logfile für einen Service eher "untypisch".
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.513 Beiträge
 
Delphi 5 Professional
 
#3

AW: Dienst und Pfadangaben

  Alt 19. Dez 2017, 15:08
Und siehe da, hier finden sich ganz seltsame Pfadangaben.
Welche davon findest du seltsam? C:\WINDOWS\system32\config\systemprofile ist das Profilverzeichnis des Nutzers SYSTEM. AppData und LocalAppData sind nunmal Pfade, die für jeden Nutzer unterschiedlich sind; die Pfade der Systemnutzer liegen eben in geschützten Systemverzeichnissen. Eigentlich ganz einfach.

Übrigens halte ich es für eine ganz dumme Idee, Pfade aus Umgebungsvariablen zu ermitteln, gerade für Dienste, bei denen man überhaupt nicht weiß, ob in deren Umgebung die Variablen gesetzt sind. Besser ist es IMO, die Pfade mit den entsprechenden API-Funktionen zu ermitteln.

Grüße
Dalai

Geändert von Dalai (19. Dez 2017 um 15:34 Uhr) Grund: Profilverzeichnis korrigiert
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
231 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Dienst und Pfadangaben

  Alt 19. Dez 2017, 15:17
Ok, danke für die Informationen.
Da ich mich das erste mal mit Services beschäftige, bin ich auch das erste Mal mit dem "Problem" in Berührung gekommen.
Hatte vorher nur mit den benutzerspezifischen Ordnern zu tun und bin daher davon ausgegangen, dass ich auch hier diese Pfade erhalte
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
36.674 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Dienst und Pfadangaben

  Alt 19. Dez 2017, 15:42
Hatte vorher nur mit den benutzerspezifischen Ordnern zu tun und bin daher davon ausgegangen, dass ich auch hier diese Pfade erhalte
Es sind auch nutzerspezifische Verzeichnisse ... nur eben für den anderen Benutzer sind es natürlich andere Verzeichnisse.
Dass es nicht C:\Users\amigage\... hättest du dir eigentlich denken können, da du im anderen Beitrag bereits bemerkt hattest, dass dein Service in einem anderen Benutzerkontext läuft, welcher nicht "amigage" heißt.

Selbst für einen "normalen" Benutzer muß LOCALAPPDATA nicht in C:\Users liegen, da die Verzeichnisse auch verschoben werden können.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
231 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Dienst und Pfadangaben

  Alt 19. Dez 2017, 16:00
@Himitsu: das mit den benutzerabhängigen Pfaden ist mir bekannt, auch dass die verschoben werden können.
Mir war nur die Pfadangabe C:\WINDOWS\system32\config\systemprofile\ vollkommen neu. Ich hatte etwas anderes erwartet
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf