На Windows, как:
is64 abc.exe
1
а также
is32 def.exe
1
В то время как abc.exe скомпилирован 64-битным, а def.exe - 32-битным в Windows.
На Windows, как:
is64 abc.exe
1
а также
is32 def.exe
1
В то время как abc.exe скомпилирован 64-битным, а def.exe - 32-битным в Windows.
Есть ли инструмент командной строки для проверки 32-битного или 64-битного exe-файла?
да
c:\Program Files (x86)\GnuWin32\bin>file file.exe
file.exe; PE32 executable for MS Windows (console) Intel 80386 32-bit
c:\Program Files (x86)\GnuWin32\bin>cd ..\..\evernote\evernote
c:\Program Files (x86)\Evernote\Evernote>file evernote.exe
evernote.exe; PE32 executable for MS Windows (GUI) Intel 80386 32-bit
c:\Program Files (x86)\Evernote\Evernote>cd c:\Program Files\Internet Explorer
c:\Program Files\Internet Explorer>file iexplore.exe
iexplore.exe; PE32+ executable for MS Windows (GUI) Mono/.Net assembly
Формат PE32 расшифровывается как Portable Executable 32-bit, а PE32+ - Portable Executable 64-bit.
См. Http://gnuwin32.sourceforge.net/packages/file.htm.
лайк:
is64 abc.exe
1
Не совсем так.
Вы можете использовать опцию -b
чтобы исключить имя файла из выходных данных, тогда вам просто нужно некоторое кунг-фу командной строки, чтобы извлечь первое слово (PE32 или PE32+), сравнить его с PE32+ и использовать это в вашем выражении «f».
В Windows 10, если у вас есть юбилейное обновление, если вы включаете оболочку bash, вы можете открыть оболочку bash и использовать команду file
подобную этой
rgb@MYPCNAME:/mnt/c$ file install.exe
install.exe: PE32 executable (GUI) Intel 80386, for MS Windows
или же
rgb@MYPCNAME:/mnt/c/Program Files/Internet Explorer$ file ieinstal.exe
ieinstal.exe: PE32+ executable (GUI) x86-64, for MS Windows
Я написал пару программ, строго выполняющих то, что вы просили (с добавлением сообщений об ошибках на ошибках и так далее.) (И на самом деле, это одна программа с определением, которое меняет свое поведение, чтобы быть абсолютно точным, но это не имеет значения.)
Вы можете найти их в моем Dropbox здесь. Исходный код включен в пакет, но вы можете отказаться от него, если он не нужен. Это в основном только в том случае, если вы не доверяете моим двоичным файлам.
Пример использования:
>is32 C:\Windows\System32\taskmgr.exe
1
>is64 C:\Windows\System32\taskmgr.exe
0
По сути, программа работает, сначала отображая двоичный файл в памяти, затем находя заголовок PE и, наконец, просто сравнивая поле Machine со значением для любой архитектуры, которую вы запрашиваете. По сути, очень простой процесс.
$ file access-client-win32.exe
access-client-win32.exe: PE32 executable for MS Windows (console) Intel 80386 32-bit
$ file access-client-win64.exe
access-client-win64.exe: PE32+ executable for MS Windows (console) Mono/.Net assembly
win32.exe -> PE32
win64.exe -> PE32+
PS: PE -> Портативный исполняемый файл