Mit AutoIt ermitteln, ob exe für 64bit oder 32bit compiliert wurde

  • Hallo zusammen,

    gibt es eine Möglichkeit, mit Autoit zu ermitteln ob eine *.exe (nicht mit AutoIt compiliert) für 64bit oder 32bit compiliert wurde, ohne das dabei die *.exe gestartet werden muss?

    (im Startfall würde z.B. auf einem 32bit System die Meldung kommen: * ist keine zulässige Win32-Anwendung)

    vgun

    Einmal editiert, zuletzt von vgun (4. April 2012 um 13:27)

  • Sollte mit der WinAPIEx.au3 funzen:

    [autoit]


    #Include <APIConstants.au3>
    #Include <WinAPIEx.au3>

    [/autoit][autoit][/autoit][autoit]

    Opt('MustDeclareVars', 1)

    [/autoit][autoit][/autoit][autoit]

    Global $Text, $Path = @MyDocumentsDir & '\'

    [/autoit][autoit][/autoit][autoit]

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

    [/autoit]

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Hallo UEZ,

    danke für die schnelle Antwort.
    Die includes <APIConstants.au3> und <WinAPIEx.au3> gibt es in meiner Autoit- Version (3.3.8.1) nicht. Daher konnte ich die Funktionalität auch (noch?) nicht testen. Gibt es in der 3.3.8.1 einen neue Funktion für "_WinAPI_GetBinaryType"?

    Hallo funkey,

    die IsWow64Process function benötigt meiner Meinung nach das Handle zum Prozess. Dazu müsste ich die *.exe aber starten oder? Das kann ich in dem Fall nicht.

    viele grüße und danke
    vgun