Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Win7: Directory.GetDirectories gibt (deutschen) Alias statt echten (englischen) Pfad zurück
Wooky
myCSharp.de - Member



Dabei seit:
Beiträge: 44

Themenstarter:

Win7: Directory.GetDirectories gibt (deutschen) Alias statt echten (englischen) Pfad zurück

beantworten | zitieren | melden

Hallo,
ich habe gerade versucht mit Directory.GetDirectories das Dateisystem zu lesen.

Zu meiner großen Überraschung bekomme ich allerdings nicht den echten Pfad zurück, sondern den Alias.

Also statt C:\\Users bekomme ich C:\\Benutzer !!!

Beim Zugriff auf den Alias bekomme ich dann ein UnauthorizedAccessException, weil ein Zugriff auf diesen Alias nicht möglich ist.

Wo ist denn der Sinn dieses Verhaltens? Kann mir jemand sagen, wie man den echten Namen erhält, mit dem man dann auch arbeiten kann?

Achso ich versuche das unter Win7 aber ich denke das ist unter Vista nicht anders...

Grüße
Wooky
private Nachricht | Beiträge des Benutzers
markus111
myCSharp.de - Member

Avatar #avatar-3108.png


Dabei seit:
Beiträge: 520
Herkunft: Henstedt-Ulzburg

beantworten | zitieren | melden

Hallo Wooky,

wenn ich Directory.GetDirectories auf C:\ mache, bokomme ich C:\Users.

Ich verwende Windows 7 Professional x64.

mfg.
markus111
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 6155
Herkunft: Stuttgart

beantworten | zitieren | melden

Hallo Wooky,

das kann ich auch nicht bestätigen (deutsches Win 7 Prof. 64bit) / Probiere es mal mit folgendem Code:


foreach (string directory in Directory.GetDirectories("C:\\"))
   Console.WriteLine(directory);
gibt bei mir unter anderem aus:
Zitat
C:\$Recycle.Bin
C:\Config.Msi
C:\Documents and Settings
C:\Dokumente und Einstellungen
C:\PerfLogs
C:\Program Files
C:\Program Files (x86)
C:\ProgramData
C:\Programme
C:\System Volume Information
C:\Users
C:\Windows
private Nachricht | Beiträge des Benutzers
Wooky
myCSharp.de - Member



Dabei seit:
Beiträge: 44

Themenstarter:

beantworten | zitieren | melden

Oh sorry,
ich war zu Tippfaul und wollte mir den ganzen Pfad sparen, weil ich dachte es wäre bei allen Verzeichnissen, aber scheinbar ist das nicht so.

Das Problem tritt konkrett unterhalb von documents auf. Hier erhalte ich:

C:\Users\test\documents\Eigene Bilder
C:\Users\test\documents\Eigene Musik
C:\Users\test\documents\Eigene Videos

obwohl es die Verzeichnisse da gar nicht gibt.
private Nachricht | Beiträge des Benutzers
markus111
myCSharp.de - Member

Avatar #avatar-3108.png


Dabei seit:
Beiträge: 520
Herkunft: Henstedt-Ulzburg

beantworten | zitieren | melden

Zitat
C:\Users\test\documents\Eigene Bilder
C:\Users\test\documents\Eigene Musik
C:\Users\test\documents\Eigene Videos

Diese Verzeichnisse gibt es auch, sind aber keine richtigen Ordner, sondern nur symbolische Links (kann man z. B. im TotalCommander sehen).

mfg.
markus111
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 6155
Herkunft: Stuttgart

beantworten | zitieren | melden

Um solche Exceptions zu vermeiden:


FileAttributes attributes = File.GetAttributes(directory);
if ((attributes & FileAttributes.System) == 0
    && (attributes & FileAttributes.ReparsePoint) == 0)
{
   //...
}
private Nachricht | Beiträge des Benutzers