IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Lien symbolique vers dossier ou fichier : créer et retrouver


Sujet :

Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2014
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2014
    Messages : 143
    Points : 60
    Points
    60
    Par défaut Lien symbolique vers dossier ou fichier : créer et retrouver
    Bonjour,
    Je cherche à créer des liens symboliques sous Delphi XE2 mais jusqu'à présent je n'arrive à rien.
    J'ai essayé un ShellExecute avec exécution de mklink.exe + les paramètres voulus mais ca ne fonctionne pas (ni avec élévation de privilèges)
    J'ai également essayé la fonction CreateSymLink mais même chose, rien ne se crée même avec élévation de privilèges.
    Y a-t-il une astuce pour créer un lien symbolique sous Delphi XE2 / Windows 7,8,10 et également pour retrouver les liens symboliques et la cible pointée ?
    Merci.

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par NicCo Voir le message
    Je cherche à créer des liens symboliques sous Delphi XE2 mais jusqu'à présent je n'arrive à rien.
    XE2 dispose dans l'unité System.SysUtils d'une fonction dédiée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    { FileCreateSymLink creates a symbolic link. The parameter Link is the name of
      the symbolic link created and Target is the string contained in the symbolic
      link. }
     
    function FileCreateSymLink(const Link, Target: string): Boolean;
    .
    Cela fonctionne sous W7, 8 et 8.1 avec élévation de privilèges...

    Pour les autres questions, il y a:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    { FileGetSymLinkTarget reads the target of a symbolic link. The result is
      returned in the symbolic link record given by SymLinkRec. }
     
    function FileGetSymLinkTarget(const FileName: string; var SymLinkRec: TSymLinkRec): Boolean; overload;
     
    { FileGetSymLinkTarget returns the target of a symbolic link. }
     
    function FileGetSymLinkTarget(const FileName: string; var TargetName: string): Boolean; overload;
     
    { FileSystemAttributes returns the file system attributes of the path\file given
      by Path. The attributes can contain any of the following:
     
      fsCaseSensitive - The file system is case sensitive.
      fsCasePreserving - The file system is case preserving but not necessarily case
                         sensitive.
      fsLocal - The drive is a local drive to the computer.
      fsNetwork - The drive is a networked drive.
      fsRemovable - The drive is removable. This could be a USB drive, CD ROM or a
                    mounted volume.
      fsSymLink - The file system supports symbolic links.
     
      If the specified path does not exist then the exception
      EDirectoryNotFoundException is raised. If an OS error occurs then the
      exception EOSError is raised. }
    Philippe.

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2014
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2014
    Messages : 143
    Points : 60
    Points
    60
    Par défaut
    Merci pour ces éléments

    Entre temps j'ai trouvé la fonction CreateSymbolicLink(Link, Target, Flag) où Flag indique si c'est un dossier ou un fichier.

    Et pour le reste j'ai trouvé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function GetTargetPath(SymlinkPath: PWideChar): string;
    var
      LinkHandle: THandle;
      TargetName: array [0..512] of Char;
    begin
      LinkHandle := CreateFile(SymlinkPath, 0, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
      Win32Check(LinkHandle <> INVALID_HANDLE_VALUE);
      try
        if GetFinalPathNameByHandle(LinkHandle, TargetName, 512, FILE_NAME_NORMALIZED) > 0 then result:=TargetName
        end else RaiseLastOSError;
      finally
        CloseHandle(LinkHandle);
      end;
    end;

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 011
    Points : 2 078
    Points
    2 078
    Par défaut Shortcut
    Bonjour,
    XE2 dispose dans l'unité System.SysUtils d'une fonction dédiée :
    XE aussi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/04/2012, 19h00
  2. Réponses: 5
    Dernier message: 17/08/2010, 12h37
  3. Supprimer un lien symbolique (vers dossier)
    Par smarties dans le forum Bibliothèque standard
    Réponses: 5
    Dernier message: 30/09/2008, 19h08
  4. [1.x] Le lien symbolique vers sf/ et le Virtualhost!
    Par Plexi86 dans le forum Symfony
    Réponses: 1
    Dernier message: 29/10/2007, 12h12
  5. Excel : lien hypertexte vers un autre fichier avec nom page
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/11/2005, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo