Laden...

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

Erstellt von Wooky vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.572 Views
W
Wooky Themenstarter:in
44 Beiträge seit 2006
vor 13 Jahren
Win7: Directory.GetDirectories gibt (deutschen) Alias statt echten (englischen) Pfad zurück

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

Mein erstes Projekt: [Sudoku Rätsel Generator, Löser und Bewerter](http://www.ahr-sudoku.de/)
479 Beiträge seit 2008
vor 13 Jahren

Hallo Wooky,

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

Ich verwende Windows 7 Professional x64.

mfg.
markus111

[Follow me on Twitter](http://twitter.com/blendingsky)
5.742 Beiträge seit 2007
vor 13 Jahren

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:

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

W
Wooky Themenstarter:in
44 Beiträge seit 2006
vor 13 Jahren

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.

Mein erstes Projekt: [Sudoku Rätsel Generator, Löser und Bewerter](http://www.ahr-sudoku.de/)
479 Beiträge seit 2008
vor 13 Jahren

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

[Follow me on Twitter](http://twitter.com/blendingsky)
5.742 Beiträge seit 2007
vor 13 Jahren

Um solche Exceptions zu vermeiden:


FileAttributes attributes = File.GetAttributes(directory);
if ((attributes & FileAttributes.System) == 0
    && (attributes & FileAttributes.ReparsePoint) == 0)
{
   //...
}