Function Reference


_WinAPI_GetBinaryType

Determines whether a file is an executable (.exe) file, and if so, which subsystem runs the executable file

#include <WinAPIFiles.au3>
_WinAPI_GetBinaryType ( $sFilePath )

Parameters

$sFilePath The full path of the file whose executable type is to be determined.

Return Value

Success: 1 - The file is executable, @extended flag will contain one of the $SCS_* constants to indicate the file's executable type.
Failure: 0, call _WinAPI_GetLastError() to get extended error information.

Remarks

$SCS_* constants require #include <APIFilesConstants.au3>

Symbolic link behavior : if the path points to a symbolic link, the target file is used.

In Windows 8 and Windows Server 2012, this function is supported by the following technologies:
    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)

See Also

Search GetBinaryType in MSDN Library.

Example

#include <APIFilesConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>
#include <WinAPIShPath.au3>

Local $sText, $sPath = @MyDocumentsDir & '\'
While 1
        $sPath = FileOpenDialog('Select File', _WinAPI_PathRemoveFileSpec($sPath), 'All Files (*.*)', BitOR($FD_FILEMUSTEXIST, $FD_PATHMUSTEXIST))
        If $sPath Then
                If _WinAPI_GetBinaryType($sPath) Then
                        Switch @extended
                                Case $SCS_32BIT_BINARY
                                        $sText = '32-bit Windows-based application'
                                Case $SCS_64BIT_BINARY
                                        $sText = '64-bit Windows-based application'
                                Case $SCS_DOS_BINARY
                                        $sText = 'MS-DOS-based application'
                                Case $SCS_OS216_BINARY
                                        $sText = '16-bit OS/2-based application.'
                                Case $SCS_PIF_BINARY
                                        $sText = 'PIF file that executes an MS-DOS-based application'
                                Case $SCS_POSIX_BINARY
                                        $sText = 'POSIX-based application'
                                Case $SCS_WOW_BINARY
                                        $sText = '16-bit Windows-based application'
                                Case Else
                                        $sText = 'unknown executable type'
                        EndSwitch
                Else
                        $sText = 'not executable file'
                EndIf
                MsgBox(($MB_ICONINFORMATION + $MB_SYSTEMMODAL), '_WinAPI_GetBinaryType()', '"' & _WinAPI_PathStripPath($sPath) & '" is ' & $sText & ".")
        Else
                ExitLoop
        EndIf
WEnd