是否有返回 64 和 32 进程列表的 windows 命令?

Dio*_*ogo 6 windows-7 64-bit process 32-bit

我正在寻找一种解决方案来定位在我的 Windows 7 64 系统上哪个进程在 64 位以上运行,哪些进程在 32 位上运行,有一个简单的 windows shell 命令可以做到这一点???

Mat*_*mes 11

经过一番思考,我意识到 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
Run Code Online (Sandbox Code Playgroud)

如果将其复制到 PowerShell 脚本中,将其命名为 process-width.ps1,然后在 PowerShell 中运行它,它将列出所有 32 位进程,然后是 64 位进程。

它通过检查进程是否将 wow64.dll 作为模块加载到其进程空间来实现此目的。wow64.dll 是用于 64 位操作系统的 Windows 32 位仿真层。它只会由 32 位进程加载,因此检查它是确定进程是否为 32 位的可靠方法。

作为长期解决方案,这应该会更好地工作。