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 位的可靠方法。
作为长期解决方案,这应该会更好地工作。
| 归档时间: |
|
| 查看次数: |
10678 次 |
| 最近记录: |