Problem beim finden von Ordnern



  • Hallo,

    ich habe in der WinAPI-FAQ folgenden Beitrag gefunden und
    angewandt, da ich nach Ordnern & Dateien im Netzwerk suchen
    möchte:

    HANDLE fHandle; 
    WIN32_FIND_DATA wfd; 
    
    fHandle=FindFirstFile("\\\\192.168.9.121\\*",&wfd); 
    
    // Ergebnis Nummer 2 ist auch uninteressant (ist ".."): 
    FindNextFile(fHandle,&wfd); 
    
    while (FindNextFile(fHandle,&wfd)) 
    { 
        if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 
        { 
    
    //hier finde ich die Unterverzeichnisse, aber eben nicht das erste !
        } 
        else 
        { 
            MessageBox(0,wfd.cFileName,"Folgende Datei gefunden:",0); 
        } 
    } 
    FindClose(fHandle);
    

    Es klappt alles super, aber leider nur, wenn bereits im Hauptverzeichnis
    eine Datei vorhanden ist. Wenn ich auf \\192.168.9.121\* suche findet er
    nichts, weil es dort nur den Ordner "Test" gibt. Erstelle ich noch eine
    "hallo.txt" dazu läuft es wieder.

    Wie kann ich auch Ordner finden, wenn diese in erster Instanz vorhanden
    sind ? 😃



  • Evtl liegt das hier dran

    // Ergebnis Nummer 2 ist auch uninteressant (ist ".."):
    FindNextFile(fHandle,&wfd);
    

    Bin mir nicht sicher, könnte mir aber gut vorstellen, dass es im Stammverzeichnis kein .. gibt 🤡



  • Hi flenders, du machst ja am Morgen schon einen
    richtigen Rundumschlag im Forum, 😃 super.

    Das mit der o.g. Zeile habe ich auch schon probiert, mein
    Programm zeigt mir aber leider dann doch genau dieses
    ".." in meiner ListBox an 😞
    Es klappt irgendwie immer nur wenn eine Datei im gleichen
    Verzeichnis gefunden werden kann.



  • Und direkt der erste Eintrag (also von FindFirstFile) ist es wohl auch nicht - komisch 😕



  • Habe jetzt so ziemlich alle Möglichkeiten ausprobiert und
    bin auch keinen Schritt weiter gekommen 😡
    Der will den ersten/alleinigen Ordner einfach nicht finden
    mit Wildcards !



  • Es giebt kein Ersten Allgemeinen Ordner in einem Netzwerk, oder kannst
    du einen ganzen Rechner Freigeben?

    Wenn du zu einem anderen Rechner ??"servst"??, erwartet Windows eine StartDatei, ala index.xxx bei FindXXXFile auch xxx.xxx, also egal Hauptsache
    eine Datei (*Wildcard), wenn auf dem anderen Rechner ein Server läuft mit "DirectoryListing=on" kann das auch so Funktionieren wie du es hast.

    Prüfe vorher auf Freigabe und Spreche diese Ordner dann nach einander an!



  • Hi,

    also das soll so ablaufen, dass ich mir eine IP abhole
    die mir mitgeteilt wird. Auf diese IP scanne ich dann,
    ob sie noch existiert und ob der Port 139 zugänglich ist.
    Wenn ja, muss ich die sich ständig ändernde Ordnerstruktur
    auslesen. Mal ist dort der Ordner "Alle", dann einige Tage
    später heißt er aber ggf. "public".
    Und wenn ich dich jetzt richtig verstanden habe, muss ich also
    doch schon genau wissen, wie der erste Ordner nun heißt ?

    Aber wie mache ich das ? Mir fällt spontan nur ein:

    "net view \\ipadresse >info.txt" und dann aus der info.txt
    zu parsen und zu checken ob dort "Platte" aufgelistet ist, was
    für einen Ordner sprechen würde. Oder gehts einfacher ?



  • NetShareEnum könnte dir evtl. helfen 🙂


Anmelden zum Antworten