Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно
MKN MKN вне форума

Ветеран


Сообщения: 2358
Благодарности: 559

Профиль | Отправить PM | Цитировать


Иногда в Windows x64 необходимо определить разрядность установленного приложения (исполняемого файла).
Причём, установленного не в $PROGRAMFILES64 или $PROGRAMFILES, что могло бы служить ориентиром разрядности. А ещё имя исполняемого файла одинаково и для x32 и для x64. Как тут быть ?
Поможет функция GetBinaryType.

Код: Выделить весь код
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

Последний раз редактировалось MKN, 06-10-2015 в 18:25.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:20, 06-10-2015 | #1855