Есть ли команда windows, которая возвращает список процессов 64 и 32?

Я ищу решение, чтобы найти, какой процесс работает более 64, а какие из них на 32 битах на моей системе Windows Seven 64, есть простая команда оболочки windows, доступная для этого???

16
задан Diogo
05.11.2022 7:38 Количество просмотров материала 2923
Распечатать страницу

4 ответа

после некоторых размышлений я понял, что метод WMIC - это своего рода обман. Гораздо лучший способ сделать это с помощью скрипта PowerShell, который выглядит примерно так:

[System.Diagnostics.Process[]] $processes64bit = @()
[System.Diagnostics.Process[]] $processes32bit = @()

foreach($process in get-process) {
    $modules = $process.modules
    foreach($module in $modules) {
        $file = [System.IO.Path]::GetFileName($module.FileName).ToLower()
        if($file -eq "wow64.dll") {
            $processes32bit += $process
            break
        }
    }

    if(!($processes32bit -contains $process)) {
        $processes64bit += $process
    }
}

write-host "32-bit Processes:"
$processes32bit | sort-object Name | format-table Name, Id -auto

write-host ""
write-host "64-bit Processes:"
$processes64bit | sort-object Name | format-table Name, Id -auto

если скопировать его в сценарий PowerShell, назовите его process-width.ps1, и запустить его в PowerShell, он будет перечислять все 32-разрядные процессы, за которыми следуют 64-разрядные процессы.

он делает это, проверяя, имеет ли процесс wow64.dll загружается как модуль в пространство процесса. wow64.dll является 32-разрядный уровень эмуляции Windows для 64-разрядных операционных систем. Он будет загружаться только 32-разрядными процессами, поэтому проверка его является надежным способом узнать, является ли процесс 32-разрядным или нет.

Это должно работать гораздо лучше, как долгосрочное решение.

10
отвечен Matt Holmes 2022-11-06 15:26
wmic process get

перечислит все процессы в системе. Можно передать параметры, чтобы получить, которые являются свойствами WMI Win32_Process. Вы можете найти этот список здесь:

http://msdn.microsoft.com/en-us/library/aa394372(В=и 85).аспн

один из них может показать, является ли процесс 64 или 32-бит.

e: нет прямого свойства, но вы можете сделать:

wmic process get Name, MaximumWorkingSetSize

Если количество возвращаемых MaximumWorkingSetSize больше 3096, тогда это определенно 64-битный процесс. На моей машине 64-разрядные процессы будут иметь MaximumWorkingSetSize 32768 (aka 32gb), в то время как 32-разрядные процессы будут иметь MaximumWorkingSetSize 1380, который является скорректированным размером моего файла подкачки. Во всяком случае, простая проверка:

MaximumWorkingSetSize > 3096 == 64-bit
4
отвечен Matt Holmes 2022-11-06 17:43

Если у вас установлена Visual Studio, то вы можете просто использовать dumpbin.exe из командной строки Visual Studio для дампа исполняемых заголовков:

dumpbin.exe /HEADERS file.exe

заголовок машины будет 14C для двоичного файла x86 и 8664 для x64:

x86:

File Type: EXECUTABLE IMAGE

FILE HEADER VALUES
         14C machine (x86)

x64

File Type: EXECUTABLE IMAGE

FILE HEADER VALUES
        8664 machine (x64)
3
отвечен bneal 2022-11-06 20:00

Это легко, просто запустите Диспетчер задач. Процесс с *32 является 32 бит app

enter image description here

2
отвечен nXqd 2022-11-06 22:17

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх