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
-
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.
-
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ütztFindFirstFile/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.
-
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?
-
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.
-
Könnte evtl. interessant sein: http://msdn.microsoft.com/en-us/library/windows/desktop/bb266517.aspx
-
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!