C# Directory.GetFiles Fehler

NSR

Mitglied
Hi Leute,

ich habe das Problem, dass das Programm mit Directory.GetFiles("Path", "*", SearchOption.AllDirectories) unter Windows 7 auf den Ordner "C:\Dokumente und Einstellungen\" zugreifen möchte der allerdings ja nicht wirklich existiert und der dann den Fehler
Der Zugriff auf den Pfad "C:\Dokumente und Einstellungen\" wurde verweigert.
ausspuckt.

Ich habe schon im Manifest eingestellt, dass das Programm als Admin gestartet werden muss, allerding nützt das nichts. Des weiteren habe ich Probiert über die Where() Lambda Expression nach den Datei-Attributen, welche der Ordner hat auszusortieren, das hat aber auch nicht geholfen.

Hoffe Ihr versteht mein Problem.
Grüße Nico
 
Hi

das liegt wahrscheinlich daran, dass es das Verzeichnis "Dokumente und Einstellungen" unter Vista/7 gar nicht gibt.

Zu XP-Zeiten war der Name wirklich noch so, ab Vista heißt das Verzeichnis in Wirklichkeit aber Users, und wird nur im Explorer mit dem alten Namen angezeigt.

Macht es nur unnötig kompliziert, ist aber nun leider so.

Gruß
 
Hi

nun gut dass würde ja die sache mit C:\\ nicht wirklich erklären. Denn man geht doch eigentlich auf die aktuelle Ordnerstruktur. Und auserdem ist dies nicht nur bei C:\\ so, sondern auch bei einer externen Festplatte, die kein C:\\ enthält. Da sagt der mir dann sowas wie "Der Ordner System Information Service" oder so ähnlich.

Naja ich habs jetzt auf ne andere art gelöst. Für die dies Interresiert.
Code:
private void GetOrdner(string pfad)
        {
            try
            {
                DirectoryInfo dirInfo = new DirectoryInfo(pfad);
                DirectoryInfo[] dInfo = dirInfo.GetDirectories();

                if (dirInfo.Name == "$RECYCLE.BIN")
                { return; }

                Ordner.Add(dirInfo.FullName);


                for (int i = 0; i < dInfo.Count(); i++)
                {
                    try
                    {
                        GetOrdner(dInfo[i].FullName);
                    }
                    catch { }
                }
            }
            catch { }
        }

        private void GetFiles()
        {
            DirectoryInfo di;

            for (int i = 0; i < Ordner.Count(); i++)
            {
                try
                {
                    di = new DirectoryInfo(Ordner[i]);

                    FileInfo[] fi = di.GetFiles();

                    for (int j = 0; j < fi.Count(); j++)
                    { Dateien.Add(fi[j].FullName + " | " + ((((fi[j].Length / 1024) / 1024) <= 0) ? (fi[j].Length / 1024).ToString() + " KB" : ((fi[j].Length / 1024) / 1024).ToString() + " MB")); }
                }
                catch
                { }
            }
        }

zuerst werden alle Ordner, bei denen KEIN Fehler auftritt in einer Liste gespeichert. Da jede Festplatte diesen Resycle.Bin Order hatte lass ich diesen einfach überspringen, da der mich nicht interresiert. Danach wird die Ordner Liste durchgegangen und alle Dateien unter den Ordnern werden ausgelesen.

Vielleicht findet ja noch jemand eine Erklärung für mein ursprüngliches Problem. Würde mich sehr Interresieren.

Grüße,
Nico
 

Neue Beiträge

Zurück