Crée ou obtient l'identifiant d'objet pour un fichier ou un répertoire spécifié
#include <WinAPIFiles.au3>
_WinAPI_CreateObjectID ( $sFilePath )
$sFilePath | Chemin du fichier ou du répertoire à créer ou dont il faut obtenir l'identifiant de l'objet. |
Succès: | Retourne la structure $tagGUID qui contient l'identifiant d'objet pour le fichier ou le répertoire dans le volume sur lequel il réside. |
Échec: | Définit @error <> 0. |
Si l'identifiant d'objet du fichier ou du répertoire n'en possède pas déjà un, _WinAPI_CreateObjectID() le crée.
Si l'identifiant de l'objet existe déjà, la fonction retourne tout simplement.
Consultez FSCTL_CREATE_OR_GET_OBJECT_ID dans la librairie MSDN.
#include <MsgBoxConstants.au3> #include <WinAPIConv.au3> #include <WinAPIFiles.au3> #include <WinAPIHObj.au3> #include <WinAPIShPath.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 ; Crée un fichier temporaire Local $sFile = _WinAPI_GetTempFileName(@TempDir) ; Crée un ID d'objet unique pour le fichier Local $tGUID = _WinAPI_CreateObjectID($sFile) ConsoleWrite('GUID: '& _WinAPI_StringFromGUID(DllStructGetPtr($tGUID)) & @CRLF) ; Ouvre le fichier par l'ID d'objet et obtient son chemin complet Local $hFile = _WinAPI_OpenFileById(_WinAPI_PathStripToRoot(@TempDir), $tGUID, 0, BitOR($FILE_SHARE_DELETE, $FILE_SHARE_READ, $FILE_SHARE_WRITE)) $sFile = _WinAPI_GetFinalPathNameByHandleEx($hFile) _WinAPI_CloseHandle($hFile) ConsoleWrite('Chemin: '& StringRegExpReplace($sFile, '\\+.\\', '') & @CRLF) ; Supprime le fichier FileDelete($sFile)