Établit un lien en dur entre un fichier existant et un nouveau fichier
#include <WinAPIFiles.au3>
_WinAPI_CreateHardLink ( $sNewFile, $sExistingFile )
$sNewFile | Le nom du nouveau fichier. |
$sExistingFile | Le nom du fichier existant. |
Succès: | Retourne True. |
Échec: | Retourne False, appelez _WinAPI_GetLastError() pour obtenir des informations sur l'erreur |
_WinAPI_CreateHardLink() est supportée uniquement sur le système de fichiers NTFS, et seulement pour les fichiers, pas les répertoires.
Le descripteur de sécurité appartient au fichier vers lequel pointe le lien. Le lien lui-même est seulement une entrée de répertoire, et n'a pas de descripteur de sécurité.
Par conséquent, lorsque vous modifiez le descripteur de sécurité d'un lien en dur, vous changez le descripteur de sécurité du fichier sous-jacent, et tous les hard link qui pointent vers le fichier permettent l'accès nouvellement spécifié.
Vous ne pouvez pas donner un descripteur de sécurité de fichier différent sur une base per-hard-link.
Utilisez la fonction _WinAPI_DeleteFile() pour supprimer des liens en dur. Vous pouvez les supprimer dans n'importe quel ordre indépendamment de l'ordre dans lequel ils sont créés.
Consultez CreateHardLink dans la librairie MSDN.
#include <Array.au3> #include <MsgBoxConstants.au3> #include <WinAPIFiles.au3> #include <WinAPIShPath.au3> Local $sFile = @DesktopDir & '\' & StringRegExpReplace(_WinAPI_PathFindFileName(@ScriptName), '\A_+', '@') ; Crée un lien en dur vers le fichier actuel avec le préfixe "@" sur votre bureau If Not _WinAPI_CreateHardLink($sFile, @ScriptFullPath) Then MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Erreur', 'Impossible de créer un lien en dur.') Exit EndIf ; Énumére tous les liens en dur vers le fichier Local $aData = _WinAPI_EnumHardLinks($sFile) _ArrayDisplay($aData, '_WinAPI_EnumHardLinks') FileDelete($sFile)