![]() |
Ordner auf Schreibrechte prüfen
Hi Community,
ja ihr denkt bestimmt ich habe die Suche nicht bemüht, aber genau das habe ich gemacht und habe dort leider keine Infos zu folgedem Problem gefunden: -> Ich muss am Ende eines Ablaufes Dateien in einem Netzwerkordner ablegen, diesen Ordner und Unterordner müsste ich vorher allerdings auf Schreibrechte prüfen (ob die Dateien auch wirklich dort abgelegt werden können / dürfen) von dem User. Dürfte ja kein Hexenwerk sein, aber mir fehlt der Ansatz, ... Danke schonmal im Vorraus. Gruß DelphiManiac |
Re: Ordner auf Schreibrechte prüfen
Hallo,
ich hab das hier mal gefunden um Auf Netzlaufwerk(auch mit Unterordner) zu mappen
Delphi-Quellcode:
Dann mußt du eigentlich nur ein filecreate machen und auswerten ob du diese Datei anlegen darfst, wenn ja hast du schreibrechte.
function ConnectToNetworkDriveW(LocalName: WideString; RemoteName: wideString; Username: WideString; Password: WideString;
RestoreAtLogon: boolean): DWORD; var NetResource : TNetResourceW; dwFlags : DWORD; begin dwFlags := 0; ZeroMemory(@NetResource, sizeof(TNetResource)); with NetResource do begin dwType := RESOURCETYPE_ANY; lpLocalName := PWideChar(LocalName); lpRemoteName := PwideChar(RemoteName); lpProvider := nil; end; if (RestoreAtLogon) then dwFlags := dwFlags or CONNECT_UPDATE_PROFILE; Result := WNetAddConnection2W(NetResource, PWideChar(Password), PWideChar(Username), dwFlags); end; function DisconnectNetworkDrivew(Name: WideString): DWORD; begin result := WNetCancelConnection2W(PWideChar(Name), CONNECT_UPDATE_PROFILE, True); end; |
Re: Ordner auf Schreibrechte prüfen
@matashen
Hey danke, aber ich glaube das ist etwas oversized für mein Problem: Es ist ein User (es gibt nur den einen der der die Software benutzen kann) angemeldet, dann will ich einfach prüfen, ob er im Order 'z:\\Test\Daten\' Dateien ablegen kann... Klar ich könnte versuchen eine Anzulegen und dann gucken, ob sie da ist, aber es muss ja auch schöner gehen, oder?? |
Re: Ordner auf Schreibrechte prüfen
wenn du eh schon eine verbindung zu dem Ziellaufwerk hast, reicht im grunde fogendes:
if filecreate('z:\\Test\Daten\'+Zieldatei)>0 then etc else keine schreibrechte Gruß Matthias |
Re: Ordner auf Schreibrechte prüfen
Hallo, ja ich glaube diese Funtkion habe ich gesucht
Delphi-Quellcode:
Meine Frage aber ist, wenn ich die Datei erstelle, dann hängt mein Programm noch 'auf der Datei', das heißt, ich kann die
if filecreate('C:\TestOrdner\test.txt') > 0 then
begin ShowMessage('Anlegen der Datei erfolgreich'); end; Datei nicht (bspw. über den Explorer löschen). Warum ist das so? Gruß DelphiManiac |
Re: Ordner auf Schreibrechte prüfen
Warum das so ist, kann ich dir nicht sagen da ich filecreate selten nutze, ich weis nur das der Rückgabewert von filecreate das handle für den Dateizugriff ist.
Es gibt noch ne andere Möglichkeit ne Datei zu erzeugen:
Delphi-Quellcode:
aber ob dies besser ist, weis ich nicht, kannst ja mal ausprobieren
var f:textfile;
. . assignfile(f,meinezieldatei) {$I-} rewrite(f); if ioresult=0 then Showmessage("Datei erfolgreich geschrieben") else Showmessage("Kein Zugriff") closefile(f); {$I+} Gruß Matthias |
Re: Ordner auf Schreibrechte prüfen
Zitat:
|
Re: Ordner auf Schreibrechte prüfen
Hi der Tipp mit dem Handle war super,
daran lag es nämlich, der Handle auf die Datei muss ja auch wieder freigeben werden, ansonsten hat meine Anwendung ja die Datei in Zugriff. Einfache Lösung hier war folgendes:
Delphi-Quellcode:
var
Handle:Integer; begin Handle:=filecreate('C:\TestOrdner\test.txt'); if (Handle) > 0 then begin ShowMessage('Anlegen der Datei erfolgreich'); FileClose(Handle); end else begin ShowMessage('Fehler beim Anlegen der Datei'); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 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