2017-05-19 1 views
3

Ich experimentiere nur ein wenig mit meinem eigenen Ordner-Browser. Ich merke, dass ich seltsame Ergebnisse bekomme, wenn ich mir den Ordner System32 in Windows 7 anschaue. Hier ist der Code:DirectoryInfo.GetFiles() Nicht alle Dateien zurückgeben

DataTable dt=new DataTable(); 
string Folder="C:\\Windows\\System32"; 
DirectoryInfo DI = new DirectoryInfo(Folder); 
foreach (FileInfo FI in DI.GetFiles()) 
{ 
    DataRow Row = dt.NewRow(); 
    if(FI.Name== "accelerometerdll.DLL") 
    { 

    } 
    Row["Name"] = FI.Name; 
    Row["Created"] = FI.CreationTime; 

    Row["Size"] = FI.Length; 
    dt.Rows.Add(Row); 
} 
dataGridView1.DataSource = dt; 

Wenn ausgeführt, ist die Liste der Dateien unvollständig. Die Gesamtzahl der Dateien ist im Vergleich zum Windows Explorer um mehr als 400 Dateien verringert.

Es gibt eine einfache Überprüfung für die Datei namens "accelerometerdll.dll", um zu versuchen, dieses Problem zu beheben. Diese Datei befindet sich absolut im Ordner System32. Ich kann es im Explorer sehen und ich kann es im Befehlsfenster sehen, wenn ich eine DIR mache. Aber es taucht nie in meiner Datentabelle auf. Die Bedingung wird nie erfüllt. Es ist wie einfach unsichtbar. Ich habe versucht, dies als Administrator mit den gleichen Ergebnissen auszuführen.

Noch beunruhigender ist, dass es eine Datei namens "12520437.cpx" zeigt und ich kann es weder im Explorer noch im Befehlsfenster sehen. Es scheint im SysWOW64-Ordner nicht der System32-Ordner zu sein ???

Mein Hauptziel hier ist, GENAU die gleichen Dateien anzuzeigen, die der Explorer anzeigt, wenn ich einen Ordner öffne.

Irgendwelche Ideen?

+2

Ist es Ihre Anwendung eine 32-Bit-Anwendung? Ist es AnyCPU, aber mit dem "favor 32 bit" Flag gesetzt? Verwenden Sie genau den angezeigten Code (fest codierter Pfad) oder verwenden Sie Environment.GetSpecialFolder()? Über die zweite Frage: GetFiles() gibt alle Dateien zurück, einschließlich der versteckten und geschützten Dateien (die im Explorer standardmäßig unsichtbar sind). Über Ihren Test: '==' ist ein Vergleich zwischen Groß- und Kleinschreibung. –

+0

@AdrianoRepetti Ich verwende genau den fest codierten Pfad wie gezeigt. Yes Any CPU und yes Prefer 32-bit. Ich glaube nicht, dass dies Auswirkungen hätte (abgesehen von den GetSpecialFolders()). –

+0

Dann willkommen in der Welt der [Dateisystem-Redirector] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa384187 (v ​​= vs.85) .aspx) –

Antwort

2

Es war notwendig, die 32-Bit-Compiler-Direktive basierend auf kenntnisreichen Antworten abzuschalten.

Weitere Informationen finden Sie hier:

File System Redirector

Verwandte Themen