UDF > WinAPIEx > Files & Devices > Files >


_WinAPI_GetBinaryType

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 )

Paramètre

$sFilePath Le chemin complet du fichier exécutable dont le type est à déterminer.

Valeur de retour

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.

Remarques

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)

Voir aussi

Consultez GetBinaryType dans la librairie MSDN.

Exemple

#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