![]() |
Windows Dienst wo ist das Arbeitsverzeichnis?
Ich habe mir einen Windows Dienst geschrieben alles Wunderbar, will ich jedoch eine ini Datei
einlesen mit TIniFile.Create('datei.ini') dann ist das Problem wie sage ich ihm wo die Datei liegt, klar könnte ich einen Absoluten Pfad angeben aber lieber wäre ein relativer Pfad, ist es möglich einem Dienst zusagen das sein Arbeitsverzeichnis nicht irgendwo im System liegt sonder Beispielsweise C:\Programme\MeinDienst\ |
Re: Windows Dienst wo ist das Arbeitsverzeichnis?
|
Re: Windows Dienst wo ist das Arbeitsverzeichnis?
@harthor: Und welcher Ordner ist jetzt das Arbeitsverzeichnis eines Dienstes? Das war doch die Frage.
|
Re: Windows Dienst wo ist das Arbeitsverzeichnis?
ini-Dateien ohne Pfadangaben landen im Windows-Verzeichnis, also bräuchte man sich gar nicht um Pfade kümmern ;)
|
Re: Windows Dienst wo ist das Arbeitsverzeichnis?
Zitat:
|
Re: Windows Dienst wo ist das Arbeitsverzeichnis?
Zitat:
Delphi-Quellcode:
Da kann er sich dann einen aussuchen...
function GetSpecialFolder(hWindow: HWND; Folder: Integer): String;
var pMalloc: IMalloc; pidl: PItemIDList; Path: PChar; begin // get IMalloc interface pointer if (SHGetMalloc(pMalloc) <> S_OK) then begin MessageBox(hWindow, 'Couldn''t get pointer to IMalloc interface.','SHGetMalloc(pMalloc)', 16); Exit; end; // retrieve path SHGetSpecialFolderLocation(hWindow, Folder, pidl); GetMem(Path, MAX_PATH); SHGetPathFromIDList(pidl, Path); Result := Path; FreeMem(Path); // free memory allocated by SHGetSpecialFolderLocation pMalloc.Free(pidl); end; //Mit folgendem Aufruf werden alle Specialfolder angezeigt, die auf DIESEM PC zur Verfügung stehen: for i := 0 to 64 do Memo1.Lines.add(IntToStr(i)+' : '+ GetSpecialFolder(Form1.Handle,i)); |
Re: Windows Dienst wo ist das Arbeitsverzeichnis?
Ich denke die Frage ist eher, WIE man das Arbeitsverzeichniss festlegt, nicht wie man es ermittelt.
|
Re: Windows Dienst wo ist das Arbeitsverzeichnis?
Zitat:
Zitat:
|
Re: Windows Dienst wo ist das Arbeitsverzeichnis?
Das ganze noch mal langsam, der Dienst soll ein paar Informationen aus einer INI Datei einlesen.
Jetzt gibt es zwei möglichkeiten: 1. Relativer Pfad
Delphi-Quellcode:
2. Absoluter Pfad
var
ini : TIniFile; begin ini := TIniFile.Create(.\einstellungen.ini');
Delphi-Quellcode:
var
ini : TIniFile; begin ini := TIniFile.Create(C:\Programme\Mein Dienst\einstellungen.ini'); Wenn ich Möglichkeit eins wähle so liegt die ini Datei irgendwo auf C: direkt oder im Windows ordner was auch immer, was ich aber nicht möchte, meine Frage ist kann ich dem Dienst sagen das das Arbeitsverzeichnis des Dienstes ein bestimmtes Verzeichnis ist. Wenn ich das Arbeitsverzeichnis des Diensts von C:\windows what ever auf C:\Programme\MeinDienst\ legen könnte so würden beide oben beschrieben möglichkeiten auf die Gleiche Datei verweisen. Der ganze Grund für diesen Ansatz liegt daran, das der Dienst nicht auf dem PC laufen soll auf dem er Programmiert wird, d.h. bei der Entwicklung liegt das arbeitsverzeichnis Beisp. D:\Entwicklung\Mein Dienst\ und von da soll er sich die INI Datei einlesen. Installiere ich nachher den Dienst auf einem PC soll das Arbeitsverzeichnis unter C:\Programme\Mein Dienst liegen. Darauf hin habe ich mich gefragt ob ich einem Dienst sagen kann wo sein Arbeitsverzeichnis liegt oder ist das fest eingestellt und nicht änderbar?` So müßte ich solange wie ich entwickel die ini datei irgendwo im system haben bzw. einen absoluten pfad angeben und ihn nachher ändern. Not falls könnte ich das ja vielleicht über einem Parameter dem Dienst mittleilen wo er suchen soll. Nur eine Lösung mit dem Arbeitsverzeichnis wäre schöner wenn gleich einfacher. Ich hoffe jetzt ist klar worum es geht, die ermittlung des Arbeitsverzeichnis ist daher völlig egal. |
Re: Windows Dienst wo ist das Arbeitsverzeichnis?
Delphi-Quellcode:
Dann läge die ini immer im Verzeichnis des ausführenden Programms.
ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'\einstellungen.ini');
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz