Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Laufwerk C:\ einlesen und erfahren das C:\Programme ein link ist (https://www.delphipraxis.net/213713-laufwerk-c-%5C-einlesen-und-erfahren-das-c-%5Cprogramme-ein-link-ist.html)

DelTurbo 13. Sep 2023 14:31

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 Thread stehen probiert. Ich bekomme immer den gleichen Namen zurück allerdings ohne Laufwerk. Also das C: fehlt.

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

himitsu 13. Sep 2023 14:38

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.
https://learn.microsoft.com/de-de/wi...2/shell/folder



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]
Bei Google suchendelphi Junction :zwinker:
https://stackoverflow.com/questions/...tion-in-delphi

DelTurbo 13. Sep 2023 14:44

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...

Uwe Raabe 13. Sep 2023 14:47

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 FileGetSymLinkTarget.

DelTurbo 13. Sep 2023 14:52

AW: Laufwerk C:\ einlesen und erfahren das C:\Programme ein link ist
 
Leider nicht.

DelTurbo 13. Sep 2023 15:08

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.

DelTurbo 13. Sep 2023 15:46

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:
drwxrwxrwx 1 root root      4096 Sep 11 10:21  ProgramData
lrwxrwxrwx 2 root root        18 Mar 18  2022  Programme -> '/mnt/Program Files'
Nachtrag: bei NtfsIsFolderMountPoint bekomme ich ein True zurück.

Noch ein Nachtrag:
Das läuft auf keinem Windows.

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:\>

Dalai 13. Sep 2023 17:35

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:.

himitsu 13. Sep 2023 19:52

AW: Laufwerk C:\ einlesen und erfahren das C:\Programme ein link ist
 
Zitat:

junction.exe
CMD: DIR kann man auch dafür verwenden

Code:
dir /AL C:\
dir /AL C:\Users
dir /AL C:\Users\%username%
Code:
dir /AL /S C:\

DelTurbo 14. Sep 2023 09:18

AW: Laufwerk C:\ einlesen und erfahren das C:\Programme ein link ist
 
Huhu,
da waren 2 Fehler in dem ding von sourceforce. Die habe ich grade geändert. Nun weiß ich nicht ob ich die sagen darf oder hochladen soll mit Quellen Angabe.

Die Ausgabe unter Delphi ist nun wie folgt.

Code:
Directory: "C:\Programme"
Junction: "C:\Programme" --> "C:\Program Files"
Junctions found: 1
Oder wenn es einfach eine Dir ist, so:
Code:
Directory: "C:\tmp"
Junctions found: 0


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:57 Uhr.
Seite 1 von 2  1 2      

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