AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Alle Ordner und Dateien aus Freigabe auflisten
Thema durchsuchen
Ansicht
Themen-Optionen

Alle Ordner und Dateien aus Freigabe auflisten

Ein Thema von n0b0dy · begonnen am 2. Okt 2006 · letzter Beitrag vom 5. Okt 2006
Antwort Antwort
n0b0dy

Registriert seit: 12. Sep 2005
Ort: Hessen
268 Beiträge
 
#1

Alle Ordner und Dateien aus Freigabe auflisten

  Alt 2. Okt 2006, 00:10
Guten Abend Zusammen,

ich habe ein Problem beim Auflisten aller Ordner und Dateien aus einer Freigabe im Netzwerk (Rechte natürlich vorhanden)
Habe mich mit FindFirst und FindNext auseinandergesetzt, so wie ich es bei lokalen Ordnern machen würde, jedoch klappt das so garnicht. Wie macht man das denn übers Netzwerk?

also möchte zB '\\ip\c$' eingeben, und er soll mir dann alle Ordner und Dateien aufzeigen.


Aber erstmal Gute Nacht
  Mit Zitat antworten Zitat
n0b0dy

Registriert seit: 12. Sep 2005
Ort: Hessen
268 Beiträge
 
#2

Re: Alle Ordner und Dateien aus Freigabe auflisten

  Alt 2. Okt 2006, 23:38
*push*

Hat denn keiner ne Ahnung? Muss doch irgendwie möglich sein, auf Freigaben zuzugreifen, und Ordner und Dateilisten davon zu erstellen


Mfg
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Alle Ordner und Dateien aus Freigabe auflisten

  Alt 3. Okt 2006, 10:53
Hallo nobody,

bei \\server-or-ip\c$ handelt es sich um eine administrative Freigabe des Rechners - hast du dir die benötigten Rechte für den Zugriff besorgt? Hast du die Fehlercodes bei deinen Zugriffsversuchen ausgewertet?

Grüße vom marabu
  Mit Zitat antworten Zitat
n0b0dy

Registriert seit: 12. Sep 2005
Ort: Hessen
268 Beiträge
 
#4

Re: Alle Ordner und Dateien aus Freigabe auflisten

  Alt 3. Okt 2006, 11:11
hi,

ja Rechte habe ich. Also das Programm läuft schon unter dem AdminAccount.

aber zum Authentifizieren habe ich auch schon diese FUnktion von Luckie genommen. Damit greift man auf eine Freigabe zu mit Admin User und passwd und "erklär" dem, dass man die nötigen Rechte hat

Delphi-Quellcode:
function ConnectToNetworkDrive(LocalName: string; RemoteName: string; Username: string; Password: string;
  RestoreAtLogon: boolean): DWORD;
var
  NetResource : TNetResource;
  dwFlags : DWORD;
begin
  dwFlags := 0;
  ZeroMemory(@NetResource, sizeof(TNetResource));
  with NetResource do begin
    dwType := RESOURCETYPE_ANY;
    lpLocalName := PChar(LocalName);
    lpRemoteName := PChar(RemoteName);
    lpProvider := nil;
  end;

  if (RestoreAtLogon) then
    dwFlags := dwFlags or CONNECT_UPDATE_PROFILE;

  Result := WNetAddConnection2(NetResource, PChar(Password), PChar(Username), dwFlags);
end;
Ich weiß halt nicht wie ich nach dem Connecten weiter machen soll und die Dateien und Ordner auflisten kann. Ich möchte KEIN Netzlaufwerk auf meinem PC erstellen, sondern nur auf eine Netzwerkfreigabe (halt auch Standardfreigabe) zugreifen (Ordner, Dateien auflisten und ggf. Dateien kopieren)


Gruß
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Alle Ordner und Dateien aus Freigabe auflisten

  Alt 3. Okt 2006, 12:43
Das Suchen nach Dateien machst du so wie immer (FindFirst, FindNext), lediglich statt eines drive letter verwendest du dann den UNC Namen. Mit dem Verbindungsaufbau über WNetAddConnection2() holst du dir ja nur das passende security token.

Grüße, marabu
  Mit Zitat antworten Zitat
n0b0dy

Registriert seit: 12. Sep 2005
Ort: Hessen
268 Beiträge
 
#6

Re: Alle Ordner und Dateien aus Freigabe auflisten

  Alt 3. Okt 2006, 13:09
ja genau das ist ja das Problem. Wenn ich den UNC-Namen eingebe, passiert einfach nichts.
Kein Fehler, kein nichts...

Folgende Funktion zum Listen der Dateien / ORdner:
Delphi-Quellcode:
procedure FindAllFiles(FileList: TStrings; RootFolder: string; Mask: string ='*'; Recurse: Boolean = True; AddFolderNames: Boolean = False; IgnoreMaskAtFolderNames: Boolean = True);
  procedure LFindAllFiles(AParentFolder: String);
  var LSearchRec: TSearchRec;
  begin
    if FindFirst(AParentFolder + '*', faAnyFile, LSearchRec) = 0 then
    begin
      repeat
        if (LSearchRec.Name <> '.') and (LSearchRec.Name <> '..') then
        begin
          if LSearchRec.Attr and faDirectory = faDirectory then
          begin
            if AddFolderNames and
               (IgnoreMaskAtFolderNames or Like(AnsiLowerCase(LSearchRec.Name), Mask)) then
              FileList.AddObject(AParentFolder + LSearchRec.Name, TObject(True));
            if Recurse then
              LFindAllFiles(AParentFolder + LSearchRec.Name + '\');
          end
          else if Like(AnsiLowerCase(LSearchRec.Name), Mask) then
            FileList.AddObject(AParentFolder + LSearchRec.Name, TObject(False));
        end;
      until FindNext(LSearchRec) <> 0;
      FindClose(LSearchRec);
    end;
  end;
begin
  Mask := AnsiLowerCase(Mask);
  LFindAllFiles(IncludeTrailingPathDelimiter(RootFolder));
end;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Alle Ordner und Dateien aus Freigabe auflisten

  Alt 3. Okt 2006, 13:15
Dann frag doch einch mal mit GetLastError den Fehlerwert von FindFirst ab.
Delphi-Quellcode:
if FindFirst = 0 then
begin

end
else
  ShowMessage(SysErrorMessage(getLastError));
Genau deswegen liefrn API Funktionen ja Fehlercodes zurück bzw. gibt es GetLastError.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
n0b0dy

Registriert seit: 12. Sep 2005
Ort: Hessen
268 Beiträge
 
#8

Re: Alle Ordner und Dateien aus Freigabe auflisten

  Alt 3. Okt 2006, 13:22
Ja kein Fehler, dass is ja das komische . Krieg ne leere StringList zurück.
Ich bin total verzweifelt. Ich mach nun das ganze nochmal neu, weil irgendwo muss ein flüchtigkeitsfehler bei der Ausgabe sein oder so....

Anders kann ich mir das nicht vorstellen.


[ EDIT ]
man oh mann. jetzt gehts
ich habe einfach alles noch einmal neu zusammengebastelt und nun gehts.
ich weiß nicht wieso.
das is doch genau das gleich wie vorher ... hab mich seit 2 tagen rumgequält, und irgendwie funzt es jetzt, obwohl nix anders is als beim ersten mal
bin platt^^
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Alle Ordner und Dateien aus Freigabe auflisten

  Alt 5. Okt 2006, 00:13
könntest du mal eine demo reinstellen ich kriegs irgendwie nicht hin
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
n0b0dy

Registriert seit: 12. Sep 2005
Ort: Hessen
268 Beiträge
 
#10

Re: Alle Ordner und Dateien aus Freigabe auflisten

  Alt 5. Okt 2006, 15:47
Funktion:
Delphi-Quellcode:
procedure FindAllFiles(FileList: TStrings; RootFolder: string; Mask: string ='*'; Recurse: Boolean = True; AddFolderNames: Boolean = False; IgnoreMaskAtFolderNames: Boolean = True);
  procedure LFindAllFiles(AParentFolder: String);
  var LSearchRec: TSearchRec;
  begin
    if FindFirst(AParentFolder + '*', faAnyFile, LSearchRec) = 0 then
    begin
      repeat
        if (LSearchRec.Name <> '.') and (LSearchRec.Name <> '..') then
        begin
          if LSearchRec.Attr and faDirectory = faDirectory then
          begin
            if AddFolderNames and
               (IgnoreMaskAtFolderNames or Like(AnsiLowerCase(LSearchRec.Name), Mask)) then
              FileList.AddObject(AParentFolder + LSearchRec.Name, TObject(True));
            if Recurse then
              LFindAllFiles(AParentFolder + LSearchRec.Name + '\');
          end
          else if Like(AnsiLowerCase(LSearchRec.Name), Mask) then
            FileList.AddObject(AParentFolder + LSearchRec.Name, TObject(False));
        end;
      until FindNext(LSearchRec) <> 0;
      FindClose(LSearchRec);
    end;
  end;
begin
  Mask := AnsiLowerCase(Mask);
  LFindAllFiles(IncludeTrailingPathDelimiter(RootFolder));
end;

Aufruf:
Delphi-Quellcode:
var
  Lst: TStrings;
begin
  Lst := TStringList.Create;
  
  FindAllFiles(Lst, '\\pc-name\c$', '*', False, True, True);

  ShowMessage(Lst.Text);

  Lst.Free;
end;

Grüße
n0b0dy
  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 04:32 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