Crée un lien symbolique
#include <WinAPIFiles.au3>
_WinAPI_CreateSymbolicLink ( $sSymlink, $sTarget [, $bDirectory = False] )
$sSymlink | Le nom du nouveau fichier. |
$sTarget | Le nom du fichier existant. |
$bDirectory | [optionnel] Indique si la cible du lien est un répertoire. True - La cible du lien est un répertoire. False - La cible du lien est un fichier (par défaut). |
Succès: | Retourne True. |
Échec: | Retourne False, appelez _WinAPI_GetLastError() pour obtenir des informations sur l'erreur |
Pour supprimer un lien symbolique, supprimez le fichier (avec _WinAPI_DeleteFile() ou API similaire) ou supprimer le répertoire (avec _WinAPI_RemoveDirectory() ou API similaire) en fonction du type de lien symbolique utilisé.
Le processus appelant doit avoir le droit $SE_CREATE_SYMBOLIC_LINK_NAME, sinon, la fonction échoue, et _WinAPI_GetLastError() retourne ERROR_PRIVILEGE_NOT_HELD (1314).
Cette fonction nécessite Windows Vista ou une version ultérieure.
_WinAPI_DeleteFile, _WinAPI_RemoveDirectory
Consultez CreateSymbolicLink dans la librairie MSDN.
#include <MsgBoxConstants.au3> #include <WinAPIError.au3> #include <WinAPIFiles.au3> #include <WinAPIHObj.au3> #include <WinAPIProc.au3> #include <WinAPISys.au3> If Number(_WinAPI_GetVersion()) < 6.0 Then MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Erreur', 'Requiert Windows Vista ou une version ultérieure.') Exit EndIf ; Active le droit "SeCreateSymbolicLinkPrivilege" pour créer un lien symbolique Local $hToken = _WinAPI_OpenProcessToken(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY)) Local $aAdjust _WinAPI_AdjustTokenPrivileges($hToken, $SE_CREATE_SYMBOLIC_LINK_NAME, $SE_PRIVILEGE_ENABLED, $aAdjust) If @error Or @extended Then MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Erreur', 'Vous n''avez pas les droits nécessaires.') Exit EndIf ; Crée un lien symbolique vers le répertoire où se trouve ce fichier avec le préfixe "@" sur votre bureau If Not _WinAPI_CreateSymbolicLink(@DesktopDir & '\' & StringRegExpReplace(@ScriptDir, '^.*\\', '@'), @ScriptDir, 1) Then _WinAPI_ShowLastError() EndIf ; Restaure les droits par défaut "SeCreateSymbolicLinkPrivilege" _WinAPI_AdjustTokenPrivileges($hToken, $aAdjust, 0, $aAdjust) _WinAPI_CloseHandle($hToken)