Как проверить, является ли двоичный файл 32-разрядным или 64-разрядным в Windows?


319

Есть ли простой способ проверить, является ли двоичный файл 32-разрядным или 64-разрядным в Windows? Мне нужно проверить, прежде чем переместить программу на 32-битную машину и испытать впечатляющий сбой.


Этот вопрос похож , но для его проверки требуется определенная работа.
ST3

3
@Guillaume: исполняемые изображения не являются процессами. Диспетчер задач показывает только процессы.
Инспектируемый

Ответы:


346

Изучив значения заголовков из ответа Ричарда , я нашел решение, которое является быстрым, простым и требует только текстового редактора. Даже Windows по умолчанию notepad.exe будет работать.

  1. Откройте исполняемый файл в текстовом редакторе. Возможно, вам придется перетащить или использовать Open...диалоговое окно редактора , потому что Windows не показывает Open with...опцию в контекстном меню для исполняемых файлов.

  2. Проверьте первые печатные символы после первого появления PE. Эта часть, скорее всего, будет окружена хотя бы некоторым пробелом (может быть много), поэтому это можно легко сделать визуально.

Вот что вы найдете:

x86:

PE  L

x64:

PE  d†

Предупреждение: использование Блокнота по умолчанию для больших файлов может быть очень медленным, поэтому лучше не использовать его для файлов размером более мегабайта или немногих. В моем случае для отображения файла размером 12 МБ потребовалось около 30 секунд. Однако Notepad ++ смог отобразить исполняемый файл размером 120 МБ практически мгновенно.

Это решение может быть полезно в случае, если вам нужно проверить файл на компьютере, на котором вы не можете установить дополнительное программное обеспечение.

Дополнительная информация:

Если у вас есть HEX-редактор, смещение PE Signature находится в смещении 0x3C. Подпись PE\0\0(буквы «P» и «E», за которыми следуют два нулевых байта), за которыми следует двухбайтовый тип машины в Little Endian.

Соответствующие значения 0x8664для исполняемого файла x64 и 0x14cдля x86. Возможных значений гораздо больше, но вы, вероятно, никогда не столкнетесь ни с одним из них или не сможете запустить такие исполняемые файлы на вашем ПК с Windows.

Полный список типов компьютеров, а также остальные спецификации .exe можно найти в разделе « Типы машин» в Microsoft PE и COFF .


21
Эй, это довольно нахально И к лучшему, поскольку на самом деле это кажется самым быстрым и простым решением для подавляющего большинства случаев :)
Septagram

4
Редкий случай, когда блокнот бьет блокнот ++. Блокнот показывает это правильно, в блокноте вы возитесь с кодировкой, чтобы показать это, но это сработало!
Зар

2
@CoDEmanX эта опция означает, что IDE или JIT сделает выбор за вас. Смотрите этот вопрос или этот блог для более подробной информации.
Александр Рево

2
@IInspectable, если бы вы на самом деле потрудились прочитать весь пост, прежде чем понизить его голосование, вы бы увидели ссылку Microsoft PE and COFF Specification, которая является настолько документированным контрактом, насколько это возможно, а также инструкции по поиску точного адреса PE-заголовка. в любом .exeфайле. Если у вас есть более надежный источник, чем официальная спецификация Microsoft по собственному исполняемому формату Microsoft, я хотел бы знать, что это такое.
Александр Рево

6
Для файлов, которые начинаются с "MZ", вам нужно посмотреть немного дальше. Я нашел PE..L со смещением 0x110, сразу после «RichMQ _........».
Jnnnnn

120

Инструмент SDK dumpbin.exeс /headersопцией включает эту информацию, сравните эти два (я добавил жирный шрифт для ключевой информации)

PS [64] E: \ # 4> свалка / заголовки C: \ Windows \ system32 \ cmd.exe
Microsoft (R) COFF / PE Dumper Версия 10.00.40219.01
Авторское право (C) Microsoft Corporation. Все права защищены.


Дамп файла C: \ Windows \ system32 \ cmd.exe

PE подпись найдена

Тип файла: EXECUTABLE IMAGE

Значения заголовка файла
            8664 машина (x64)
               6 количество секций
        4CE798E5 отметка даты времени сб 20 ноября 09:46:13 2010
               0 указатель файла на таблицу символов
               0 количество символов
              Размер F0 необязательного заголовка
              22 характеристики
                   исполнимый
                   Приложение может обрабатывать большие (> 2 ГБ) адреса
[...]

а также

PS [64] E: \ # 5> свалка / заголовки C: \ Windows \ syswow64 \ cmd.exe
Microsoft (R) COFF / PE Dumper Версия 10.00.40219.01
Авторское право (C) Microsoft Corporation. Все права защищены.


Дамп файла C: \ Windows \ syswow64 \ cmd.exe

PE подпись найдена

Тип файла: EXECUTABLE IMAGE

Значения заголовка файла
             14C машина (x86)
               4 количество разделов
        4CE78E2B отметка даты и времени сб 20 ноября 09:00:27 2010
               0 указатель файла на таблицу символов
               0 количество символов
              E0 размер необязательного заголовка
             102 характеристики
                   исполнимый
                   32-битный словарь
[...]

1
Вы также можете увидеть (IA64) для 64-битного Itanium exe.
Дэррил Браатен

21
как я читал в другом месте о суперпользователе, использование dumpbin /headers | findstr "machine"значительно упрощает представление того, что ищет QA ...
user1055604

3
Dumpbin.exe находится здесь:C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
Devid

3
@David: не обязательно (другая версия VS, не использующая место установки по умолчанию, использующая версию из Windows SDK): именно поэтому я не указал.
Ричард

6
Проще всего использовать dumpbin, если вы запускаете его из командной строки Visual Studio: stackoverflow.com/a/477389/1390430
Бен,

46

Если у вас нет или вам не нужен весь Windows SDK или Visual Studio, вы можете использовать sigcheck.exeиз SysInternals :

sigcheck.exe C:\Windows\Notepad.exe

Выход:

Sigcheck v2.1 - File version and signature viewer
Copyright (C) 2004-2014 Mark Russinovich
Sysinternals - www.sysinternals.com

c:\windows\notepad.exe:
    Verified:       Signed
    Signing date:   8:59 AM 8/22/2013
    Publisher:      Microsoft Windows
    Description:    Notepad
    Product:        Microsoft« Windows« Operating System
    Prod version:   6.3.9600.16384
    File version:   6.3.9600.16384 (winblue_rtm.130821-1623)
    MachineType:    64-bit

4
Кажется, это не всегда точно: попробуйте использовать его с LinqPad.exe (версия AnyCPU-64bit), и Sigcheck скажет вам, что это «32 бит» ...
Мэтт

@ Матт интересно. LinqPad звучит как приложение .net; Интересно, работает ли sigcheck корректно только на нативных исполняемых файлах (для этой цели).
Бриантист

2
Да, это приложение .NET. В .NET, если он предварительно не скомпилирован, вы можете указать «x86» или «AnyCPU». «x86» всегда будет работать как 32-битный, но AnyCPU будет работать как 64-битный в 64-битной системе, но как 32-битный в 32-битной системе. SigCheck должен учитывать это и показывать как минимум «32-битный или 64-битный (AnyCPU) .NET». Например, в этом случае ILSpy говорит: «Архитектура: AnyCPU (предпочтительно 64-разрядная версия)», но ILSpy не будет работать для не-.NET EXE-файлов.
Мэтт

1
Это может иметь место, например, старый заголовок «MZ», который просто существует для не-Windows («DOS») ОС, говоря: «Это приложение требует Microsoft Windows» ... ;-)
Мэтт

2
Да, в старые добрые времена, когда у вас был отладчик DOS в оболочке, и вы могли разобрать код (который содержал только один вызов DOS, печатающий это сообщение) ... и заменить текст на «Ответ 42». :-D
Мэтт

38

Я могу подтвердить, что fileутилита (например, из cygwin) будет различать 32- и 64-битные исполняемые файлы. Они выглядят следующим образом:

32.exe: PE32 executable (GUI) Intel 80386, for MS Windows
64.exe: PE32+ executable (console) x86-64, for MS Windows

Как видите, очень очевидно, что есть что. Кроме того, он различает исполняемые файлы консоли и графического интерфейса, что также очевидно.


1
Это решение довольно широко доступно для всех разработчиков, которые установили msysgit.
FrontierPsycho

Почему исполняемые файлы в Windows есть MZвместо PE?
BattleTested

Стоит отметить, что утилиты GNU можно получить в виде отдельных двоичных файлов, если в противном случае вам не нужен Cygwin. gnuwin32.sourceforge.net/packages/file.htm
Уолш,

32

Простой способ - запустить его (если вы доверяете ему) и взглянуть на вкладку процесса в диспетчере задач. 32-битные процессы покажут «* 32» в конце имени процесса. Если вы не хотите запускать его на своем компьютере, попробуйте EXE Explorer . Он покажет целую кучу информации об исполняемых файлах, включая 32-разрядную или 64-разрядную.


8
К сожалению, для этого требуется запустить исполняемый файл. Возможно, вам нужно проверить архитектуру программы как способ устранения неполадок, почему она не работает.
Майк Кристиансен

6
Как вы запускаете DLL?
user34660


1
@ samusarin, который должен быть в посте.
user34660

@ user34660 Вы технически правы, DLL не имеет mainточки входа и поэтому не будет выполняться как отдельный процесс. Существует функция инициализации, которая вызывается при загрузке, но это не «главная» функция.
Самис

24

У многих людей установлен отличный 7-zip , и они добавили в него папку 7-Zip PATH. 7-zip понимает форматы файлов, отличные от ZIP и RAR, такие как файлы MSI и исполняемые файлы PE. Просто используйте командную строку 7z.exeв рассматриваемом PE-файле (Exe или DLL):

7z l some.exe | more
7z l some.exe | findstr CPU

Вывод будет включать в себя строки следующим образом, со CPUстрокой, читающей либо, x86либо x64, что задается здесь:

Path = C:\Extra\AV\neroAacEnc.exe
Type = PE
CPU = x86
Characteristics = Executable 32-bit

Path = C:\Extra\AV\LAME\lame_enc.dll
Type = PE
CPU = x86
Characteristics = Executable DLL 32-bit

Path = C:\Extra\AV\FFmpeg\bin\ffmpeg.exe
Type = PE
CPU = x64
64-bit = +
Characteristics = Executable LargeAddress NoRelocs NoLineNums NoLocalSyms NoDebugInfo

Path = C:\Extra\AV\FFmpeg\bin\avcodec-56.dll
Type = PE
CPU = x64
64-bit = +
Characteristics = Executable DLL LargeAddress NoLineNums NoLocalSyms NoDebugInfo

вау, я никогда не знал, что 7z может сделать это. Возможно, он содержит fileреализацию внутри?
phuclv

17

64-разрядная версия Process Explorer может сказать вам. Просто запустите исполняемый файл и откройте окно свойств процесса. На главной вкладке есть запись с надписью «Изображение: 32-разрядная» или «Изображение: 64-разрядная».

введите описание изображения здесь


23
Simply run the executableА что если вы не хотите запускать программу?
Synetech

3
@Synetech Оригинальный вопрос не подразумевает, что это так.
Эндрю Ламберт

Я думаю, это самый простой способ, если исполняемый файл не выходит слишком быстро.
starbeamrainbowlabs

7
Как вы запускаете DLL?
user34660

15

Самый простой способ (когда данные не являются конфиденциальными)

Я считаю, что Virustotal File detail - это самый простой способ узнать, является ли двоичный файл 32-разрядным или 64-разрядным.

Additional informationВариант предусматривает в дополнении много полезных информации о файле.

Вирустотальный анализ


[Virustotal TrID


12

Метод запуска исполняемого файла и последующей проверки в проводнике процессов или аналогичном инструменте имеет некоторые очевидные недостатки:

  1. Мы должны выполнить процесс.
  2. Для недолговечных процессов (таких как echo hello world types.) Обозреватель процессов может даже не регистрировать, что новый процесс запущен.

Метод Dumpbin.exe может решить цель возможно.

Другой альтернативой может быть использование команды file в cygwin . Тем не менее, я не проверял это на Windows. Это хорошо работает на Linux.

Usage: file program_under_test.exe

РЕДАКТИРОВАТЬ: Только что протестировал file.exe в окне. работает отлично. :)


1
Просто хотел сказать, что есть некоторые ситуации, когда метод Дракса не будет очень полезным.
Anishsane

3
>> Это все еще требует запуска программы, которую автор хотел избежать: нет .. мы запускаем ее так: file.exe program_under_test.exe
anishsane

1
А те, кто хочет избежать установки всего cygwinпакета, могут получить fileпакет gnuwin32 .
Боб

6
@anishsane Совершенно неправильно. fileпросто читает данные с диска в двоичном формате и проверяет их на наличие магических чисел, сравнивая их с базой данных. 32-битные программы Windows выпускаются как PE32, а 64-битные и .NET программы - PE32 +. Сама по fileсебе разрядность делает абсолютно нулевую разницу - и 32-разрядные, и 64-разрядные приложения могут считывать данные с диска, и это все, что ему нужно.
Боб

1
@ Марч Ха! То есть интересно. Я предполагаю, что это означает, что заглушка среды выполнения .NET является 32-разрядной. Таким образом, он выполняет 32-битный процесс за долю секунды, но все, что делает этот процесс, - это запускает среду выполнения .NET, которая создает собственный 64-битный процесс.
Клак

10

Вот решение Powershell, никаких внешних зависимостей или чего-либо еще. Откройте Powershell, вставьте туда функцию (дважды нажмите Enter, чтобы вернуться к приглашению), затем используйте ее, как в моих примерах ниже функции:

function Test-is64Bit {
    param($FilePath=“$env:windir\notepad.exe”)

    [int32]$MACHINE_OFFSET = 4
    [int32]$PE_POINTER_OFFSET = 60

    [byte[]]$data = New-Object -TypeName System.Byte[] -ArgumentList 4096
    $stream = New-Object -TypeName System.IO.FileStream -ArgumentList ($FilePath, 'Open', 'Read')
    $stream.Read($data, 0, 4096) | Out-Null

    [int32]$PE_HEADER_ADDR = [System.BitConverter]::ToInt32($data, $PE_POINTER_OFFSET)
    [int32]$machineUint = [System.BitConverter]::ToUInt16($data, $PE_HEADER_ADDR + $MACHINE_OFFSET)
    $stream.Close()

    $result = "" | select FilePath, FileType, Is64Bit
    $result.FilePath = $FilePath
    $result.Is64Bit = $false

    switch ($machineUint) 
    {
        0      { $result.FileType = 'Native' }
        0x014c { $result.FileType = 'x86' }
        0x0200 { $result.FileType = 'Itanium' }
        0x8664 { $result.FileType = 'x64'; $result.is64Bit = $true; }
    }

    $result
}

Вот пример вывода:

D:\> Test-is64bit

FilePath               FileType Is64Bit
--------               -------- -------
C:\Windows\notepad.exe x64         True


D:\> Test-is64bit 'C:\Program Files (x86)\Mozilla Firefox\firefox.exe'

FilePath                                           FileType Is64Bit
--------                                           -------- -------
C:\Program Files (x86)\Mozilla Firefox\firefox.exe x86        False

Ровности. Приведенный выше скрипт, похоже, оставляет ссылку на файл открытым. Не удалось собрать, пока я сначала не закрыл powershell (запустил скрипт для опроса DLL в \ bin).
Самис

1
Очень круто. +1. Itanium, безусловно, 64-
Rich Homolka

@Samusarin: может быть, добавить $stream.dispose();после закрытия? Должен освободить файловые дескрипторы. ( stackoverflow.com/questions/1999858/… )
Йорик

1
более полная версия может быть найдена в Проверка, является ли exe 64-битным
phuclv

6

Даже исполняемый файл, помеченный как 32-битный, может работать как 64-битный, если, например, это исполняемый файл .NET, который может работать как 32- или 64-битный. Для получения дополнительной информации см. Https://stackoverflow.com/questions/3782191/how-do-i-determine-if-a-net-application-is-32-or-64-bit , в котором есть ответ, что Утилита CORFLAGS может использоваться для определения того, как будет работать приложение .NET.

Вывод CORFLAGS.EXE

Для 32-битного исполняемого файла:

Version   : v2.0.50727
CLR Header: 2.5
PE        : PE32
CorFlags  : 0x3
ILONLY    : 1
32BITREQ  : 1
32BITPREF : 0
Signed    : 0

Для 64-битного исполняемого файла:

Version   : v2.0.50727
CLR Header: 2.5
PE        : PE32+
CorFlags  : 0x1
ILONLY    : 1
32BITREQ  : 0
32BITPREF : 0
Signed    : 0

Для исполняемого файла, который может работать как 32- или 64-разрядный и будет работать как 64-разрядный, когда это возможно:

Version   : v2.0.50727
CLR Header: 2.5
PE        : PE32
CorFlags  : 0x1
ILONLY    : 1
32BITREQ  : 0
32BITPREF : 0
Signed    : 0

Для исполняемого файла, который может работать как 32- или 64-разрядный, но будет работать как 32-разрядный, если не загружен в 64-разрядный процесс:

Version   : v4.0.30319
CLR Header: 2.5
PE        : PE32
CorFlags  : 0x20003
ILONLY    : 1
32BITREQ  : 0
32BITPREF : 1
Signed    : 0

Классная команда, но она не будет работать для собственных (неуправляемых) исполняемых файлов / библиотек. ( corflags : error CF008 : The specified file does not have a valid managed header)
Томаш Гандор

@TomaszGandor Да, контекст этого ответа был только управляемым кодом. На неуправляемый код отвечают другие ответы. Насколько я знаю, только управляемый код может переключаться между выполнением как 32-, так и 64-разрядных.
BlueMonkMN


3

Если вы работаете в Windows 7, в проводнике Windows щелкните правой кнопкой мыши исполняемый файл и выберите «Свойства». В окне свойств выберите вкладку «Совместимость». Если в разделе «Режим совместимости» вы видите Windows XP, это 32-битный исполняемый файл. Если вы видите Windows Vista, она 64-битная.


-1 вообще не правда. Различные 32- и 64-битные двоичные файлы показаны в режиме совместимостиWindows 8
Питер Хандорф,

@Peter Я пробовал довольно много на Windows 7, и он всегда работал для меня. Не могли бы вы привести пример двоичного файла, в котором режим совместимости по умолчанию - Windows 8? И какая у тебя Windows? Благодарю.
Axxis

Я на сервере 2012 R2 и попробовал несколько случайных двоичных файлов. Некоторые 32-битные показывают как, Windows XP SP2но другие показывают как Vistaили Windows 8. Так что этот метод не является правильным.
Питер Хандорф,

3

Как добавить 32/64 битный тест в ваше контекстное меню

Создайте текстовый файл с именем exetest.reg и содержащий этот код:

Windows Registry Editor Version 5.00

; What will appear in the contextual menu when right-clicking on a .exe file
[HKEY_CLASSES_ROOT\exefile\shell\command32_64]
@="32/64 bit test"

; What to do with it
; here, %1 is the file given as argument of the script
[HKEY_CLASSES_ROOT\exefile\shell\command32_64\command]
@="\"c:\\temp\\x86TestStart.bat\" \"%1\""

Создайте текстовый файл с именем, x86TestStart.batсодержащим только эту строку кода, и сохраните его в C: \ temp:

c:\temp\x86or64.vbs %1

Создайте текстовый файл с именем, x86or64.vbsсодержащим этот код, и сохраните его в C: \ temp:

rem Reading binary file in VBScript: http://stackoverflow.com/questions/21249440/modify-first-two-bytes-of-a-file-using-vbscript
rem Info on executables: https://dmoj.ca/problem/exe

rem x86/64 signature is located dinamycally; its position is addressed
rem from bytes in 0x3C-0x3D position.

rem Possible signatures;
rem "PE..L" (hex code: 50.45.00.00.4C) = 32 bit
rem "PE..d†" (hex code: 50.45.00.00.64.86) = 64 bit

' ------------------------------------
' Source code by Jumpkack 2015
' ------------------------------------

' Read all arguments from command line:
Set args = Wscript.Arguments

' Store first argument (full path to file)
FileName = args(0)

' Find address of executable signature:
FirstChars = readBinary(FileName)
FirstChars = FirstChars
Addr1 = asc(mid(FirstChars,61,1))
Addr2 = asc(mid(FirstChars,62,1))
AddrFinal = Addr2*256 + Addr1 + 1

' Check signature:
if ucase(hex(asc(mid(FirstChars,AddrFinal+4,2)))) = "4C" then Wscript.Echo Filename & " is a 32 bit executable."
if ucase(hex(asc(mid(FirstChars,AddrFinal+4,2)))) = "64" then Wscript.Echo Filename & " is a 64 bit executable."


Function readBinary(path)
    Dim a, fso, file, i, ts
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set file = fso.getFile(path)
    If isNull(file) Then
        wscript.echo "File not found: " & path
        Exit Function
    End If
    Set ts = file.OpenAsTextStream()
    'a = makeArray(file.size)
    a=""
    i = 0
    While (Not ts.atEndOfStream) and (i<60000)
       'a(i) = ts.read(1)
       a = a + ts.read(1)
       i = i + 1
    Wend
    ts.close
    readBinary = a
 End Function

Дважды щелкните файл exetest.reg: новый ключ будет добавлен в реестр Windows:

[HKEY_CLASSES_ROOT\exefile\shell\command32_64\command]

Он будет отображаться как « 32/64 битный тест » в контекстном меню после щелчка правой кнопкой мыши по исполняемому файлу.

Нажатие на элемент приведет к запуску пакетного файла c:\\temp\\x86TestStart.bat\, который запускает файл VBscript x86or64.vbs, который читает exe-подпись и показывает результат.

Если вы не можете или не хотите вмешиваться в реестр, просто скопируйте файл .vbs на панель быстрого запуска и перетащите исполняемый файл поверх него.


3

Мои два цента будут просто скачать обходчик зависимостей и проверить, что за архитектура использовалась в одном из исполняемых файлов.

Как это использовать:

Просто загрузите приложение, запустите его, нажмите на значок «Открыть» → найдите файл * .exe → выберите и внизу после сканирования отражений вы увидите сетку с данными, в которой один столбец содержит детали «архитектуры» (x86, x64)

Откройте исполняемый файл и посмотрите архитектуру сборки

скриншот ходок зависимости


1

Я не видел это упоминалось. Существует программа просмотра PE под названием CFF Explorer от NTCore , которая может предоставить вам эту информацию. Его можно скачать и запустить как переносной, но вы также можете установить его, если хотите.

Щелкните правой кнопкой мыши двоичный файл ( .exeи .dllт. Д.) И выберите «Открыть с помощью CFF Explorer». Перейдите к Nt Headers -> File Header -> В поле «Характеристики» нажмите «Нажмите здесь»

Если это 32-битная программа, будет установлен флажок «32-битное слово». Например, я установил 32-битную версию Notepad ++, как вы можете видеть на изображении ниже. В противном случае это 64 бит.

введите описание изображения здесь


Существует более быстрый способ использования проводника CFF: сразу при загрузке файла в разделе «тип файла» вы получаете «Portable Executable 64» или «Portable Executable 32»
Arthur.V

0
  • запустить приложение
  • открыть диспетчер задач
  • щелкните правой кнопкой мыши и создайте файл дампа
  • записать путь
  • перейти к пути и открыть .DMPдамп в Visual Studio
  • там вы получите все детали
  • проверить архитектуру процесса:

3
Я чувствую себя обязанным подчеркнуть тот факт, что этот ответ требует запуска приложения. Предыдущие комментаторы предположили, что это может быть нежелательно. Кроме того, Visual Studio не будет автоматически доступен на всех платформах Windows.
G-Man

0

два моих цента: как разработчик C ++, обходчик зависимостей ( http://www.dependencywalker.com/ ) очень информативен, отображает не только 64/32 бита, но и каждый участвующий Dll: введите описание изображения здесь

Вы можете увидеть 64 слева от каждого имени файла ...


1
Снимок экрана не отображает ответ - 32-разрядная и 64-разрядная информация ...
TomEus

0

Тем не менее, WSL «s fileкоманда очень работает.

file /mnt/c/p/bin/rg.exe будет выводить:

/mnt/c/p/bin/rg.exe: PE32+ executable (console) x86-64, for MS Windows

file /mnt/c/p/bin/u.exe будет выводить:

/mnt/c/p/bin/u.exe: PE32 executable (GUI) Intel 80386, for MS Windows, UPX compressed

0

Столбец платформы в диспетчере задач Windows 10

Windows 7 не имеет столбца платформы. Таким образом, диспетчер задач Windows 7 не будет показывать это.

В Windows 10 выбор столбцов больше не находится под «видом». В Windows 10, когда вы находитесь на вкладке сведений, вы щелкаете правой кнопкой мыши заголовок столбца, а затем выбираете столбцы. Затем установите флажок «платформа».

введите описание изображения здесь

введите описание изображения здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.