![]() |
Delphi-Version: 5
TDirectory.GetFiles und ('C:\Documents and Settings')
Warum liefert mir das Programm beim Aufruf:
Delphi-Quellcode:
die Fehlermeldung zurück, dass das genannte Verzeichnis (unter Windows) nicht bestehen würde?
var files := TDirectory.GetFiles('C:\Documents and Settings');
OK, das Verzeichnis ist versteckt, aber daran sollte es doch nicht scheitern, oder? Zumal mir in
Delphi-Quellcode:
auch das Verzeichnis "C:\Documents and Settings" im Ergebnis (also im Dirs-StringArray) zurückgeliefert wird.
var dirs := TDirectory.GetDirectories('C:\');
Das gleiche Problem tritt mit "C:\Dokumente und Einstellungen" auf. Ferner das gleiche Problem mit
Delphi-Quellcode:
Ist das ein Bug oder habe ich hier etwas falsch verstanden?
var attr := TDirectory.GetAttributes('C:\Documents and Settings', false);
|
AW: TDirectory.GetFiles und ('C:\Documents and Settings')
OK, ich denke, das hat wohl etwas damit zu tun, dass in den neueren Windows-Systemen grundsätzlich kein Zugriff mehr darauf erlaubt ist.
Selbst wenn ich im Windows-Explorer mir versteckte Verzeichnisse anzeigen lasse und dort auf "Documents and Settings" doppelt klicke, erhalte ich den Zugriff verweigert Hinweis. Konsequenz ist also, letztlich, im Suchfilter für Verzeichnisse im Laufwerk "C:\" diese beiden Ordner herauszufiltern, da man damit ja eh nichts anfangen kann... |
AW: TDirectory.GetFiles und ('C:\Documents and Settings')
Komisch, bei mir ist das ein LINK und kein Verzeichnis. (Windows 10)
Diese LINK zeigt auf C:\Benutzer |
AW: TDirectory.GetFiles und ('C:\Documents and Settings')
Unter Windows Vista aufwärts ist das ein virtuelles Verzeichnis. Das existiert nicht wirklich und wird von Windows nur simuliert aus Kompatibilität zu Windows XP und 2000.
|
AW: TDirectory.GetFiles und ('C:\Documents and Settings')
Zitat:
Für die anderen Methoden musst du erst über FileGetSymLinkTarget den wahren Namen des verlinkten Verzeichnisses herausfinden. |
AW: TDirectory.GetFiles und ('C:\Documents and Settings')
@Frickler: Ja, ganr früher waren die Verzeichnisse oft direkt übersetzt vorhanden, in der Installationssprache des Windows.
Inzwischen ist, seit Jahren die Pfade immer in englisch, mit Translation in der "Anzeige" und oft auch mit zusätzlichen Junktions, falls jemand wirklich mal das "Sichtbare" benutzt. Und auch die partition C: und das Windows-Verzeichnis heißen nun auch immer so (früher wurden die Partitionen gezählt und die 2. Partition war dann das D:) Aber da zuviele Programmierer ständig schlampig mit hartgecodeten Pfaden arbeiteten, anstatt Windows zu fragen, .......... Zitat:
Jupp, einige Verzeichnisse sind auch oft doppelt. * einmal das Original, inkl. Translation aus Desktop.ini * und nochmal "unsichtbar" in der Übersetzung, als Junktion (funktionierend oder nicht), damit es umgeleitet wird, oder knallt, falls jemand wirklich die Übersetzung in einem Programm benutzt. |
AW: TDirectory.GetFiles und ('C:\Documents and Settings')
Zitat:
Einfach nur diese Verzeichnisse auszuschließen löst das Problem nur halb, da du beim tatsächlich dahinter steckenden C:\Users ja auch keinen Zugriff hast. |
AW: TDirectory.GetFiles und ('C:\Documents and Settings')
Zitat:
Und bevor jetzt jemand sagt, jaaa, aber das was darunter liegt (also <username>/etc) liegt ja nun auf C:\Users\... - ja, das ist vielleicht der Default, aber man kann alle möglichen Folder (Documents, Downloads, Pictures, etc) an eine andere Stelle legen. Um diese herauszufinden gibt es SHGetFolderPath. Wo die diversen virtuellen Verzeichnisse hinzeigen, kann man auch in der Registry sehen, unter
Code:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
|
AW: TDirectory.GetFiles und ('C:\Documents and Settings')
Zitat:
|
AW: TDirectory.GetFiles und ('C:\Documents and Settings')
Zitat:
Code:
Und auch trotz
C:\>cd "Documents and Settings"
C:\Documents and Settings>dir Volume in drive C is Windows Volume Serial Number is DA0A-6171 Directory of C:\Documents and Settings File Not Found C:\Documents and Settings>
Delphi-Quellcode:
liefert
FollowLink = True
Delphi-Quellcode:
eine Exception, da der intern aufgerufenen
TDirectory.GetAttributes
Delphi-Quellcode:
dieser Parameter herzlich egal ist.
CheckGetAttributesParameters
Guckst du hier: ![]() Nur in Verbindung mit einem entsprechenden Unterordner bekommt man irgendwelche nützlichen Ergebnisse - z.b. wenn ich das hier mache:
Code:
C:\>cd "Documents and Settings"\sglienke
C:\Documents and Settings\sglienke>dir Volume in drive C is Windows Volume Serial Number is DA0A-6171 Directory of C:\Documents and Settings\sglienke 17.02.2023 15:01 <DIR> . 17.02.2023 15:01 <DIR> .. 31.01.2023 10:37 <DIR> .dotnet 02.02.2023 08:07 <DIR> .nuget 11.01.2023 10:57 <DIR> .templateengine 17.02.2023 15:01 <DIR> .vscode 02.12.2022 08:33 <DIR> 3D Objects 02.12.2022 08:33 <DIR> Contacts 20.02.2023 09:53 <DIR> Desktop 23.01.2023 12:13 <DIR> Documents ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz