AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ordner auf Schreibrechte prüfen

Ein Thema von DelphiManiac · begonnen am 1. Mär 2007 · letzter Beitrag vom 1. Mär 2007
Antwort Antwort
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#1

Ordner auf Schreibrechte prüfen

  Alt 1. Mär 2007, 08:36
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
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#2

Re: Ordner auf Schreibrechte prüfen

  Alt 1. Mär 2007, 08:45
Hallo,

ich hab das hier mal gefunden um Auf Netzlaufwerk(auch mit Unterordner) zu mappen

Delphi-Quellcode:
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;
Dann mußt du eigentlich nur ein filecreate machen und auswerten ob du diese Datei anlegen darfst, wenn ja hast du schreibrechte.
Matthias
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#3

Re: Ordner auf Schreibrechte prüfen

  Alt 1. Mär 2007, 08:50
@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??
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#4

Re: Ordner auf Schreibrechte prüfen

  Alt 1. Mär 2007, 08:55
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
Matthias
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#5

Re: Ordner auf Schreibrechte prüfen

  Alt 1. Mär 2007, 09:06
Hallo, ja ich glaube diese Funtkion habe ich gesucht

Delphi-Quellcode:
  if filecreate('C:\TestOrdner\test.txt') > 0 then
  begin
    ShowMessage('Anlegen der Datei erfolgreich');
  end;
Meine Frage aber ist, wenn ich die Datei erstelle, dann hängt mein Programm noch 'auf der Datei', das heißt, ich kann die
Datei nicht (bspw. über den Explorer löschen). Warum ist das so?
Gruß
DelphiManiac
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#6

Re: Ordner auf Schreibrechte prüfen

  Alt 1. Mär 2007, 09:19
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:
var f:textfile;
.
.
assignfile(f,meinezieldatei)
{$I-}
rewrite(f);
if ioresult=0 then Showmessage("Datei erfolgreich geschrieben")
else Showmessage("Kein Zugriff")
closefile(f);
{$I+}
aber ob dies besser ist, weis ich nicht, kannst ja mal ausprobieren

Gruß Matthias
Matthias
  Mit Zitat antworten Zitat
JocalAreaNetwork

Registriert seit: 19. Aug 2005
35 Beiträge
 
Delphi 2006 Architect
 
#7

Re: Ordner auf Schreibrechte prüfen

  Alt 1. Mär 2007, 09:28
Zitat von DelphiManiac:
Hallo, ja ich glaube diese Funtkion habe ich gesucht

Delphi-Quellcode:
  if filecreate('C:\TestOrdner\test.txt') > 0 then
  begin
    ShowMessage('Anlegen der Datei erfolgreich');
  end;
Meine Frage aber ist, wenn ich die Datei erstelle, dann hängt mein Programm noch 'auf der Datei', das heißt, ich kann die
Datei nicht (bspw. über den Explorer löschen). Warum ist das so?
Gruß
DelphiManiac
Du wirst die Datei mit dem Programm wieder schließen müssen.
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#8

Re: Ordner auf Schreibrechte prüfen

  Alt 1. Mär 2007, 09:29
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;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz