Entwickler-Ecke

Dateizugriff - FindFirst in Service-Applikation auf


Mikro79 - Mo 16.08.10 16:59
Titel: FindFirst in Service-Applikation auf
Hallo,

ich habe ein kleines Problem mit der Funktion "FindFirst" in einer Delphi-Applikation, die als Dienst läuft.
Hier versuche ich alle Textdateien in einem Verzeichnis zu finden und z.B. zu löschen.
Dies funktioniert auch einwandfrei. Nur, wenn ich als Suchpfad ein Netzwerkpfad übergebe, funktioniert das alles nicht mehr.
Nun habe ich schon herausgefunden, dass ein Netzlaufwerk so nicht funktioniert, da dieser an den Benutzer gebunden ist.
Aber ein UNC-Pfad sollte ja eigentlich schon funktionieren...

Code-Ausschnitt:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
function fnDeleteFile (strPara1 : string; nPara1 : integer): integer;
var
  nReturn           : integer;                  // Funktionsergebnis
  srDateien         : TSearchRec;               // Struktur mit Dateiinformationen
begin
  nReturn := FindFirst (strPara1, faAnyfile - faDirectory, srDateien);
  if nReturn = 0 then  
  begin
    repeat                                                                      // solange suchen...
      if (srDateien.Name<>'.'and (srDateien.Name<>'..'then                  // Wenn nicht unterverzeichnis
      begin
      // Hier was mit den Dateien machen....
      end;
    until FindNext(srDateien)<>0;                                               // ...bis alle durch  
  end;
end;


Für strPara1 := 'D:\*.txt' funktionirt alles gut, ich bekomme alle Textdateien aus dem Verzeichnis.
Für strPara1 := 'Y:\*.txt' (wobei Y: ein verbundenes Netzlaufwerk darstellt) funktioniert es nicht (nReturn = -1)
Für strPara1 := '\\<PC-Name>\<Freigabe>\*.txt (wobei die Freigabe alle Rechte hat und auf Y: verweist auch nicht (nReturn = -1).

Es muss irgendwas mit dem Dienst zu tun haben, da ich das Genze auch mal in eine "normale" Delphi-App eingebaut habe, wo alles (auch mit Netzlaufwerken und Freigaben) einwandfrei funktioniert...

Über irgendeienn Tip wäre ich dankbar.

Gruß, Mirko


Narses - Di 17.08.10 14:02

Moin!

Der Dienst wird vermutlich unter dem Systemkonto laufen? Stell das Konto für den Dienst auf einen Benutzer um, der die nötigen Rechte im Netz hat. :idea: ;)

cu
Narses


tif - Di 17.08.10 16:07

Da hat einer das gleiche Problem :shock: :

http://entwickler-forum.de/showthread.php?t=63280


Mikro79 - Di 17.08.10 16:13

Hi,
Danke erstmal für eure Mühe.
Habe das Problem jetzt gelöst (siehe link im Vorbeitrag, der übrigens auf meinen eigenen Beitrag in einem anderen Forum verweist ;-) ).
Also, nochmals danke

Gruß, Mirko