Datei suchen lassen



  • Hallo,

    ich möchte in einem Programm gerne alle unterstützen Dateien auf dem Computer listen egal wo sie sich befinden. Ich könnte nun mit einer Suche langsam alle Verzeichnisse durchsuchen. Ich frage mich allerdings ob es nicht schon fertige Algorithmen gibt die beim suchen von *.txt eine Liste von allen auf dem Computer befindlichen txt Datein liefert?
    Das sollte eine Routine sein, die nicht wie Windows vor Systemverzeichnissen zurückschreckt oder gar nur in "Eigene Dateien" arbeitet. Es sollte also schon der ganze Computer durchsucht werden und nicht durch Verweise in einen Deadloop kommen. Besonders stellt sich hier die Frage nach dem Windows Index, macht der überhaupt Sinn wenn diverse Verzeichnisse ausgeschlossen sind?

    Kann mir da jemand einen Tip geben?

    Grüße
    TheNoName


  • Mod

    Wenn Du keine Leserechte hast, bekommst Du auch keine. "Alle Dateien" aufzulisten wird Dir als "normaler Userr" nie gelingen.

    Ansonsten FindFirstFile/FindNextFile. Da benötigt man nichts spezielles...

    Wenn Du allerdings Junctions nicht korrekt behandelst wirst Du in einige Rekursionen kommen.



  • "Alle Dateien" aufzulisten wird Dir als "normaler Userr" nie gelingen.

    Das ist ein Argument, dann korrigiere ich mich auf eine Suche für den jeweiligen Benutzer, dessen Programmverzeichnisse mit maximaler Tiefe.
    Mein Programm wird allerdings immer als Admin ausgeführt.

    Das mit FindFirstFile will ich nicht verwenden, ich such eine Art Desktopsuche als Winapi Befehl bzw. ein vorgefertigtes Projekt auf z.B. codeproject oder codeguru das erprobt ist. Ich möchte ungern selbst was basteln wenn es jemand anderes schon vorher tief genug ergründet hat.


  • Mod

    Du hast selbst als Admin auf "System Volume Information" keine Rechte!
    Selbst ein Admin hat keine Rechte auf den SQL-Datenfolder in eine SQL 2008 Installation!
    Glreiches gilt für Datenfolder des Exchange uva mehr.

    Hast Du Dir noch nie angesehen was für Rechte es in einem normalen Windows System gibt? 🕶

    - Es gibt die Windows-Indizierung, aber die umfasst ja genau die Programm-Dateien nicht.
    - Es gibt sonst keine bestehende API, die solche Dateifunktionen übergreifend sonst unterstützt

    FindFirstFile/FindNextFile wird Deine einziger Freund bleiben...

    Was willst Du damit eigentlich bezwecken?



  • Es soll alle exe Dateien suchen, mit einer Liste von bekannten Vergleichen und die Programme in einer Schnellstartleiste implementieren, wenn diese der Größe und Version entsprechen.
    Ich brauche damit Zugriff auf den Programm Ordner.


  • Mod

    Dann wirst Du dennoch nicht um FindFirstFile/FindNextFile drum herum kommen...



  • Ich seh das aber schon richtig, das diese Befehle an dem System vorbeigehen und keinerlei Geschwindigkeitsoptimierung durch den Index besitzen?


  • Mod

    An welchem "System vorbeigehen"?

    - Ansonsten werden alle Datenoperationen auf einem Laufwerk natürlich gecached...
    - Und ja, es gibt keinen Index auf eine Extension oder so was, nicht mal einen auf Dateinamen.
    - Allerdimgs sind Dateinamen auf NTFS VOlumns alphabetisch sortiert, was Dir aber bei der Suche nach EXE Dateien nicht hilft.




  • Mod

    dot schrieb:

    Könnte evtl. interessant sein: http://msdn.microsoft.com/en-us/library/windows/desktop/bb266517.aspx

    Aber "C:\Program Files" wird eben nicht standardmässig indiziert!


Anmelden zum Antworten