Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Забанен


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

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


А как на счет определения разрядности системы по типу explorer.exe? В смысле прочитать поле MachineType самого PE:
Код: Выделить весь код
@echo off
  setlocal enabledelayedexpansion
    rem получаем полный путь до explorer.exe
    for %%i in (explorer.exe) do (
      if exist "%%~$PATH:i" (
        rem ищем в PE поле e_lfanew структуры IMAGE_DOS_HEADER
        rem длина поля равна четырем байтам, смещение 0x3C
        for %%j in (C D E F) do (
          for /f "tokens=2" %%k in (
            'fc /b "%%~$PATH:i" "%~f0" ^| findstr /rc:"03%%j:"'
          ) do set "ofs=%%k!ofs!"
        )
        rem пропускаем сигнатуру PE\x00\x00
        set /a "ofs=0x!ofs!+4"
        rem получаем адреса двух байтов поля MachineType
        rem структуры IMAGE_FILE_HEADER и создаем из них
        rem строку - эдакий regexp для findstr
        for /l %%j in (0, 1, 1) do (
          cmd /c exit /b !ofs!
          set "str=!str!!=exitcode! "
          set /a "ofs+=1"
        )
        rem читаем значения поля MachineType
        for /f "tokens=2" %%j in (
          'fc /b "%%~$PATH:i" "%~f0" ^| findstr "!str:~0,-1!"'
        ) do set "mt=%%j!mt!"
        if "!mt!" equ "014C" echo:x86
        if "!mt!" equ "8664" echo:x64
      )
    )
  endlocal
exit /b
А если не усложнять:
Код: Выделить весь код
wmic os get osarchitecture

Последний раз редактировалось greg zakharov, 26-06-2016 в 10:19.

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

Отправлено: 10:07, 26-06-2016 | #10