![]() |
Service-Anwendung und assignfile
Hi,
hab mich mal an einer Service-Anwendung versucht und stehe vor folgendem Problem: Versuche eine normale Textdatei zu öffnen und daraus zu lesen:
Delphi-Quellcode:
die test.txt existiert natürlich im gleichen Verzeichnis wie die Anwendung. Der Service beendet sich, wenn dieser Code vorkommt.
assignfile(f,'test.txt');
reset(f); // sonstiger code closefile(f); Auch den kompletten Pfad wie z.B. c:\test.txt nimmt er nicht. Wenn ich allerdings eine neue Datei anlege mit
Delphi-Quellcode:
dann funktioniert alles ohne Probleme.
assignfile(f,'test.txt');
rewrite(f); // sonstiger code closefile(f); Jemand ne Idee? Gruß speedy |
AW: Service-Anwendung und assignfile
klingt nach einem Rechteproblem, wobei ich mich nicht auf den Pfad der Anwendung verlassen würde, auf "C:\datei.ext" darf ein Normaluser seit Vista auch nicht mehr ohne weiteres.
|
AW: Service-Anwendung und assignfile
Unter welchem Nutzer läuft den der Dienst?
|
AW: Service-Anwendung und assignfile
Der Dienst läuft laut Taskmanager als System.
|
AW: Service-Anwendung und assignfile
Und?mhat deas Benutzerkonto System die nötigen Zugriffsrechte?
|
AW: Service-Anwendung und assignfile
Windows sagt mir zumindest in den erweiterten Sicherheitseinstellungen der entsprechenden EXE, dass das System Vollzugriff hat, oder gibts da noch irgendwo ne andere Möglichkeit die Rechte des System Accounts zu ändern? In den Konteneinstellungen wird System ja gar nicht erst angezeigt.
|
AW: Service-Anwendung und assignfile
Nimm doch testweise einen unpreviligierten Ordner mit einem harten Pfad der exisistiert (z.B. C:\test\test.txt).
Ändere den Dienstaccount versuchsweise auf ein Administratives Konto. Versuche die Fehlermeldung abzugreifen (GetLasterror), oder zu debuggen (hierbei ist es hilfreich ein Sleep(10000)) am Anfang einzubauen und nach dem Dienststart in Delphi "mit Prozess verbinden aufzurufen" |
AW: Service-Anwendung und assignfile
Zitat:
|
AW: Service-Anwendung und assignfile
Warum fängst du an der Stelle nicht mal die Exception ab?
(dann würde sich dein Service auch nicht ins Nirwana verabschieden) Hängt allerdings auch von dem Compilerschalter
Delphi-Quellcode:
ab
{$I+}
![]()
Delphi-Quellcode:
Ansonsten würde ich immer folgendes Konstrukt vorschlagen:
assignfile(f,'test.txt');
try reset(f); // sonstiger code except on E: Exception do SchreibInMeinLog( E.Message ); end; closefile(f);
Delphi-Quellcode:
assignfile( f, 'test.txt' ); // Zu sehen wie ein Object := TObject.Create
try {$I-} reset( f ); {$I+} if IOResult = 0 then begin // sonstiger code end; finally closefile( f ); // Zu sehen wie ein Object.Free end; |
AW: Service-Anwendung und assignfile
wobei spätestens hier das nächste Problem auftreten wird.:wink:
Delphi-Quellcode:
SchreibInMeinLog
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:14 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-2025 by Thomas Breitkreuz