Functions > FileDirDisk >


FileCreateNTFSLink

Crée un hardlink NTFS vers un fichier ou un répertoire.

FileCreateNTFSLink ( "source", "hardlink" [, flag = 0] )

Paramètres

source Chemin de la source dans laquelle le lien sera créé.
hardlink Chemin du lien.
flag [optionnel] Détermine s'il faut remplacer un lien lorsqu'il existe déjà.
Peut prendre une des valeurs suivantes:
    $FC_NOOVERWRITE (0) = (par défaut) n'écrase pas un lien existant
    $FC_OVERWRITE (1) = écrase un lien existant

Valeur de retour

Succès: Retourne 1.
Échec: Retourne 0.

Remarques

Le répertoire de destination doit déjà exister.

Cette fonction ne fonctionne que sur un volume avec un système de fichiers NTFS.

Si la source est un fichier, le hardlink doit être sur le même volume.
Si la source est un répertoire, le cross volume est autorisé.

FileDelete() ou FileMove() peut être utilisée sur un hardlink.

Pour gérer le lien avec l'explorateur, vous pouvez utiliser l'extension du shell NTFSLink

En relation

FileCreateShortcut

Exemple

#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>

Example()

Func Example()
    ; Crée une constante locale avec le chemin du fichier qui sera lu/écrit.
    Local Const $sFilePath = _WinAPI_GetTempFileName(@TempDir)

    ; Crée un fichier temporaire vers lequel le hardlink pointera.
    If Not FileWrite($sFilePath, "Exemple d'utilisation de FileCreateNTFSLink.") Then
        MsgBox($MB_SYSTEMMODAL, "", "Une erreur est survenue lors d'une écriture dans le fichier temporaire.")
        Return False
    EndIf

    ; Crée un lien NTFS du fichier .txt au fichier .log du bureau.
    Local $iNTFSLink = FileCreateNTFSLink($sFilePath, @DesktopDir & "\ExampleNTFSLink.log")

    ; Affiche un message si le lien NTFS a été créé.
    If $iNTFSLink Then
        ; Ouvre le dossier du bureau.
        ShellExecute(@DesktopDir)

        MsgBox($MB_SYSTEMMODAL, "", "Le lien NTFS a été créé." & @CRLF & _
            "FileCreateNTFSLink a retourné: " & $iNTFSLink)
    Else
        MsgBox($MB_SYSTEMMODAL, "", "Le lien NTFS n'a pas été créé." & @CRLF & _
            "FileCreateNTFSLink a retourné: " & $iNTFSLink)
    EndIf

    ;Supprime les fichiers temporaires.
    FileDelete($sFilePath)
    FileDelete(@DesktopDir & "\ExampleNTFSLink.log")
EndFunc   ;==>Example