Raymond Chen von Microsoft hat einen Beitrag geschrieben, das wahrscheinlich hier gilt: Computing the size of a directory is more than just adding file sizes. Im Wesentlichen erklärt er, dass Informationen wie die Größe eines Verzeichnisses nicht im Eintrag des Verzeichnisses gespeichert werden können, da verschiedene Benutzer möglicherweise unterschiedliche Berechtigungen haben und möglicherweise einige der Dateien für sie unsichtbar machen. Daher ist die einzige Möglichkeit, die Größe, die der Benutzer sehen sollte, zu erhalten, sie auf Anfrage des Benutzers zu berechnen.
In Ihrem Fall ergibt sich die Antwort wahrscheinlich aus dem gleichen Grund. Die Liste der für Ihre App verfügbaren Verzeichnisse kann nur ermittelt werden, wenn Ihre App danach fragt, da sich die Ansicht des Stammverzeichnisses von denen einer anderen App unterscheidet, die mit anderen Anmeldeinformationen ausgeführt wird. Warum Windows Verzeichnisse zusammen mit Dateien, die ich nicht weiß, aber das ist selbstverständlich.
Da Win32 ist so nah wie Sie an das Dateisystem im Benutzermodus gelangen, würde ich jede höhere Ebene Lösungen wie .NET vermeiden, da es nur die Schnittstelle vereinfacht. Ein Fahrer könnte schneller arbeiten, aber das ist außerhalb meines Wissens.
sagen, 99995 Dateien und ein Unterverzeichnis am Ende der FindNextFile Liste. hatte ich 99995 mal versucht, dann sag: ja, es enthält Unterverzeichnis? – user25749
Yeap, das ist die einzige Möglichkeit, Verzeichnisinhalte auf Win32 aufzulisten. Aus diesem Grund dauert das Öffnen eines Ordners mit vielen Dateien im Explorer so viel Zeit. – sharptooth
OMG, ein wirklich schlechtes Design ... – user25749