Définit le nom court d'un fichier spécifié
#include <WinAPIFiles.au3>
_WinAPI_SetFileShortName ( $hFile, $sShortName )
$hFile | Le handle du fichier. Le fichier doit être sur un volume avec un système de fichiers NTFS. En outre, le fichier doit être ouvert avec soit le droit d'accès $GENERIC_ALL, soit $GENERIC_WRITE|$DELETE, et avec l'attribut de fichier $FILE_FLAG_BACKUP_SEMANTICS. |
$sShortName | Le nom court valide pour le fichier. Si le nom court spécifié existe déjà, la fonction échoue et le code de la dernière erreur est ERROR_ALREADY_EXISTS (183). |
Succès: | Retourne True |
Échec: | Retourne False |
L'appelant de cette fonction doit avoir le privilège $SE_RESTORE_NAME.
Consultez SetFileShortName dans la librairie MSDN.
#include <APIFilesConstants.au3> #include <MsgBoxConstants.au3> #include <WinAPIFiles.au3> #include <WinAPIHObj.au3> #include <WinAPIProc.au3> #include <WinAPIShPath.au3> Local Const $sTemp = @TempDir & '\Temporary File.txt' ; Vérifie le système de fichiers NTFS If StringCompare(DriveGetFileSystem(_WinAPI_PathStripToRoot($sTemp)), 'NTFS') Then MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Erreur', 'Le fichier doit être sur un volume avec le système de fichier NTFS.') Exit EndIf ; Active le privilège "SeRestorePrivilege" pour effectuer l'opération de renommer Local $hToken = _WinAPI_OpenProcessToken(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY)) Local $aAdjust _WinAPI_AdjustTokenPrivileges($hToken, $SE_RESTORE_NAME, $SE_PRIVILEGE_ENABLED, $aAdjust) If @error Or @extended Then MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Erreur', 'Vous n''avez pas les privilèges requis.') Exit EndIf ; Crée un fichier temporaire FileWrite($sTemp, '') ConsoleWrite('Ancien nom court: ' & _WinAPI_PathStripPath(FileGetShortName($sTemp)) & @CRLF) ; Définit le nom court "TEMP.TXT" pour le fichier Local $hFile = _WinAPI_CreateFileEx($sTemp, $OPEN_EXISTING, BitOR($GENERIC_WRITE, $RIGHTS_DELETE), 0, $FILE_FLAG_BACKUP_SEMANTICS) _WinAPI_SetFileShortName($hFile, 'TEMP.TXT') _WinAPI_CloseHandle($hFile) ConsoleWrite('Nouveau nom court: ' & _WinAPI_PathStripPath(FileGetShortName($sTemp)) & @CRLF) ; Supprime le fichier temporaire FileDelete($sTemp) ; Restaure les privilèges par défaut "SeRestorePrivilege" _WinAPI_AdjustTokenPrivileges($hToken, $aAdjust, 0, $aAdjust) _WinAPI_CloseHandle($hToken)