Détermine si un fichier est un fichier exécutable (exe), et si oui, quel sous-système exécute le fichier exécutable
#include <WinAPIFiles.au3>
_WinAPI_GetBinaryType ( $sFilePath )
$sFilePath | Le chemin complet du fichier exécutable dont le type est à déterminer. |
Succès: | Retourne 1 - Le fichier est exécutable, @extended sera contient l'une des constantes $SCS_* qui indique le type du fichier exécutable. |
Échec: | Retourne 0, appelez _WinAPI_GetLastError() pour obtenir des informations sur l'erreur. |
Les constantes $SCS_* nécessite #include <APIFilesConstants.au3>
Comportement de lien symbolique: si le chemin pointe vers un lien symbolique, le fichier cible est utilisé.
Sous Windows 8 et Windows Server 2012, cette fonction est supportée par les technologies suivantes:
Server Message Block (SMB) 3.0 protocol
SMB 3.0 Transparent Failover (TFO)
SMB 3.0 with Scale-out File Shares (SO)
Cluster Shared Volume File System (CsvFS)
Resilient File System (ReFS)
Consultez GetBinaryType dans la librairie MSDN.
#include <APIFilesConstants.au3> #include <MsgBoxConstants.au3> #include <WinAPIFiles.au3> #include <WinAPIShPath.au3> Local $sText, $sPath $sPath = FileOpenDialog('Select File', @MyDocumentsDir , 'All Files (*.*)', 1 + 2) While $sPath <> "" If _WinAPI_GetBinaryType($sPath) Then Switch @extended Case $SCS_32BIT_BINARY $sText = 'Application Windows 32-bit.' Case $SCS_64BIT_BINARY $sText = 'Application Windows 64-bit.' Case $SCS_DOS_BINARY $sText = 'Application MS-DOS.' Case $SCS_OS216_BINARY $sText = 'Application 16-bit OS/2.' Case $SCS_PIF_BINARY $sText = 'Fichier PIF qui exécute une application MS-DOS.' Case $SCS_POSIX_BINARY $sText = 'Application POSIX.' Case $SCS_WOW_BINARY $sText = 'Application Windows 16-bit.' Case Else $sText = 'Type d''exécutable inconnu.' EndSwitch Else $sText = 'n''est pas un fichier exécutable.' EndIf MsgBox(BitOR($MB_ICONINFORMATION, $MB_SYSTEMMODAL), '_WinAPI_GetBinaryType()', '"' & _WinAPI_PathStripPath($sPath) & '" ' & $sText) $sPath = FileOpenDialog('Select File', _WinAPI_PathRemoveFileSpec($sPath), 'All Files (*.*)', 1 + 2) WEnd