![]() |
Laufwerk C:\ einlesen und erfahren das C:\Programme ein link ist
Hi,
also ich habe nun alles was mir eingefallen bei Google und hier gesucht. Ich komme nicht auf die Lösung. Entweder such ich falsch oder es ist nicht so einfach. Ich möchte mit FindFirst und FindNext (wenn es damit geht) die Directory Struktur von C: einlesen. Dabei möchte ich feststellen ob das was ich grade bekommen habe (z.b. C:\Progamme) ein link ist und wo er hinzeigt. Ich habe alle Versionen die in diesem ![]() Nun weiß ich echt nicht mehr weiter. Was mache ich falsch? bzw. wie macht man sowas? Und Unix hatte ich das ruckzuck. Das ist aber leider nicht Portierbar. Vielen dank im Voraus |
AW: Laufwerk C:\ einlesen und erfahren das C:\Programme ein link ist
C:\Programme ist kein Link, das ist eine Lokalisierung an "C:\Program Files" und kommt aus der Desktop.ini, in diesem Verzeichnis.
Wenn du sowas automatisch übersetzt haben willst, dann mußt du mit den ShellFolder-Interfaces arbeiten. ![]() OK, in deutschen Windowsen gibt es für viele Verzeichnisse doch einen "defekten" Link Junction, falls wer über die normale FileAPIs versucht den übersetzten Namen zu benutzen. Müssten die da nicht in den FileAttributen was drin haben? [add] ![]() ![]() |
AW: Laufwerk C:\ einlesen und erfahren das C:\Programme ein link ist
Huhu,
das mag sein. Aber ich habe mit mklink selber Links angelegt. Bei denen klappt auch nix. Leider. Könntest du ansonsten eventuell noch 1-2 Schlagworte mitgeben oder hast du eventuell ein Beispiel. Ich glaube da würde ich mich nass machen :-D Hehe, hast du eine Glaskugel oder sowas?!? Während ich geschrieben habe haust du das schon rein, irre... |
AW: Laufwerk C:\ einlesen und erfahren das C:\Programme ein link ist
Ich kann gerade nicht sagen, ob das in D2007 schon verfügbar ist, aber in aktuellen Delphi-Versionen gibt es in System.Sysutils ein
![]() |
AW: Laufwerk C:\ einlesen und erfahren das C:\Programme ein link ist
Leider nicht.
|
AW: Laufwerk C:\ einlesen und erfahren das C:\Programme ein link ist
Mit JclNTFS klappt es.
Vielen dank an euch, ich hätte NIE gefunden. |
AW: Laufwerk C:\ einlesen und erfahren das C:\Programme ein link ist
Hmmm,
tut mir leid, aber noch eine Frage. Wie finde ich heraus das C:\Programme auf C:\Program Files zeigt? Mount ich es unter Unix kann man es sehen. Das find ich leider nicht in der Unit. Unix ausgabe:
Code:
Nachtrag: bei NtfsIsFolderMountPoint bekomme ich ein True zurück.
drwxrwxrwx 1 root root 4096 Sep 11 10:21 ProgramData
lrwxrwxrwx 2 root root 18 Mar 18 2022 Programme -> '/mnt/Program Files' Noch ein Nachtrag: ![]() Das Sysinternals läuft einwandfrei.
Code:
C:\>junction.exe C:\Programme
Junction v1.07 - Creates and lists directory links Copyright (C) 2005-2016 Mark Russinovich Sysinternals - www.sysinternals.com C:\Programme: JUNCTION Print Name : C:\Program Files Substitute Name: C:\Program Files C:\>junc.exe C:\Programme Directory: "C:\Programme" Junctions found: 0 C:\> |
AW: Laufwerk C:\ einlesen und erfahren das C:\Programme ein link ist
Der vorige Inhalt des Beitrags war falsch, hab doch tatsächlich die Junction C:\Programme übersehen :oops:.
|
AW: Laufwerk C:\ einlesen und erfahren das C:\Programme ein link ist
Zitat:
Code:
dir /AL C:\
dir /AL C:\Users dir /AL C:\Users\%username%
Code:
dir /AL /S C:\
|
AW: Laufwerk C:\ einlesen und erfahren das C:\Programme ein link ist
Huhu,
da waren 2 Fehler in dem ding von ![]() Die Ausgabe unter Delphi ist nun wie folgt.
Code:
Oder wenn es einfach eine Dir ist, so:
Directory: "C:\Programme"
Junction: "C:\Programme" --> "C:\Program Files" Junctions found: 1
Code:
Directory: "C:\tmp"
Junctions found: 0 |
AW: Laufwerk C:\ einlesen und erfahren das C:\Programme ein link ist
Das Problem ist, dass aus irgendwelchen Gründen im Windows "diese" Links nicht funktionieren. (bzw. ich vergesse immer den Grund)
Meistens knallen sie direkt beim Zugriff, aber manchmal ist es ganz schlimm, weil sieht so aus als ob es ginge, aber ...
Delphi-Quellcode:
C:\Users\**********>cd \
C:\>cd Programme C:\Programme>dir Datenträger in Laufwerk C: ist OS Volumeseriennummer: ****-**** Verzeichnis von C:\Programme Datei nicht gefunden C:\Programme>cd .. C:\>cd Program Files C:\Program Files>dir Datenträger in Laufwerk C: ist OS Volumeseriennummer: ****-**** Verzeichnis von C:\Program Files 30.08.2023 16:10 <DIR> . 30.08.2023 16:10 <DIR> .. 31.08.2017 13:27 <DIR> 7-Zip 25.02.2021 14:46 <DIR> AdoptOpenJDK 09.08.2021 14:08 <DIR> Application Verifier ... |
AW: Laufwerk C:\ einlesen und erfahren das C:\Programme ein link ist
Hmm, nun hast du mich verwirrt. :?
Aber du hast recht. Es gibt da echt verschiedene Sachen. Wenn man mit /D eine "Verknüpfung" auf ein Netzwerk Laufwerk macht ist das was total anderes als mit /J lokal. [Falsch]Und was ich gemerkt habe ist das
Delphi-Quellcode:
den letzten buchtstaben weglässt. Also die länge stimmt nicht anstatt xxxx\Test kommt xxxx\Tes zurück.[/Falsch]
NtfsGetJunctionPointDestination
Es scheint das der letzte Buchstabe vorne steht?!? Aber mit dem jnuc klappt es einwandfrei. Bisher. Habe noch nicht alles getestet. Man war/ist das bei Unix einfach. |
AW: Laufwerk C:\ einlesen und erfahren das C:\Programme ein link ist
So,
eine Rückmeldung damit das nicht offen bleibt. Ich bekomme es nun so:
Code:
Dort sind "Symlinks/Junctions" auf Netzwerk Laufwerke bei und leider einer den ich nicht wieder hinbekomme.
C:\codetyphon-6.5\!Projekte --> UNC\Server\Programmierung\Projekte\
C:\codetyphon-7.1\!Projekte --> UNC\Server\Programmierung\Projekte\ C:\codetyphon-8.1\!Projekte --> UNC\Server\Programmierung\Projekte\ C:\Dokumente und Einstellungen --> C:\Users C:\iscsi --> \??\Volume{dae1f45f-9f50-11e6-82e8-d0509934602c}\ C:\Program Files\Gemeinsame Dateien --> C:\Program Files\Common Files C:\Program Files\Windows NT\Zubehör --> C:\Program Files\Windows NT\Accessories C:\ProgramData\Anwendungsdaten --> C:\ProgramData
Code:
Bei einem "dir" zeigt er es auch so an.
C:\iscsi --> \??\Volume{dae1f45f-9f50-11e6-82e8-d0509934602c}\
Code:
Der zeigt auf ein iSCSI Laufwerk, bzw. auf die Partition. Gemacht habe ich den beim Formatieren. Kein Buchstabe zu geordnert sonder in eine Direcoty laufen lassen. Wie sowas mit mklink wieder hinbekommen soll ist mir im moment noch ein Rätsel.
18.06.2022 14:12 <JUNCTION> iscsi [\??\Volume{dae1f45f-9f50-11e6-82e8-d0509934602c}\]
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:56 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