Иногда в Windows x64 необходимо
определить разрядность установленного приложения (исполняемого файла).
Причём, установленного не в $PROGRAMFILES64 или $PROGRAMFILES, что могло бы служить ориентиром разрядности. А ещё имя исполняемого файла одинаково и для x32 и для x64. Как тут быть ?
![Smile](images/smilies/new/smile.gif)
Поможет функция
GetBinaryType.
Код:
![Выделить весь код](images/misc/selectcode.png)
OutFile "GetBinaryType.exe"
/*
https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa364819(v=vs.85).aspx
0: result := '32-bit Windows-based';
1: result := 'MS-DOS – based';
2: result := '16-bit Windows-based';
3: result := 'PIF for MS-DOS – based';
4: result := 'POSIX – based';
5: result := '16bit-OS/2';
6: result := '64-bit Windows-based';
*/
Section
StrCpy $0 "$EXEDIR\unknown_bit.exe"
System::Call `kernel32::GetBinaryType(t r0, *i .r2)`
MessageBox MB_OK "$2"
SectionEnd