Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Service-Anwendung und assignfile (https://www.delphipraxis.net/155980-service-anwendung-und-assignfile.html)

speedy 15. Nov 2010 18:10

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:
assignfile(f,'test.txt');
reset(f);
// sonstiger code
closefile(f);
die test.txt existiert natürlich im gleichen Verzeichnis wie die Anwendung. Der Service beendet sich, wenn dieser Code vorkommt.
Auch den kompletten Pfad wie z.B. c:\test.txt nimmt er nicht.

Wenn ich allerdings eine neue Datei anlege mit
Delphi-Quellcode:
assignfile(f,'test.txt');
rewrite(f);
// sonstiger code
closefile(f);
dann funktioniert alles ohne Probleme.

Jemand ne Idee?

Gruß
speedy

Bummi 15. Nov 2010 20:48

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.

mkinzler 15. Nov 2010 20:53

AW: Service-Anwendung und assignfile
 
Unter welchem Nutzer läuft den der Dienst?

speedy 15. Nov 2010 22:19

AW: Service-Anwendung und assignfile
 
Der Dienst läuft laut Taskmanager als System.

Luckie 15. Nov 2010 22:21

AW: Service-Anwendung und assignfile
 
Und?mhat deas Benutzerkonto System die nötigen Zugriffsrechte?

speedy 15. Nov 2010 22:33

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.

Bummi 15. Nov 2010 22:41

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"

wicht 15. Nov 2010 22:45

AW: Service-Anwendung und assignfile
 
Zitat:

Windows sagt mir zumindest in den erweiterten Sicherheitseinstellungen der entsprechenden EXE, dass das System Vollzugriff hat
Das heißt aber nur, dass das System-Konto auf die .exe Vollzugriff hat - aber nicht auf die zu erstellende Datei (bzw. das Verzeichnis, in dem sie erstellt werden soll).

Sir Rufo 15. Nov 2010 22:52

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:
{$I+}
ab
http://docwiki.embarcadero.com/VCL/XE/de/System.Reset
Delphi-Quellcode:
assignfile(f,'test.txt');
  try
    reset(f);
    // sonstiger code
  except
    on E: Exception do
      SchreibInMeinLog( E.Message );
  end;
closefile(f);
Ansonsten würde ich immer folgendes Konstrukt vorschlagen:
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;

Bummi 15. Nov 2010 22:56

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.
Seite 1 von 3  1 23      

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