有没有办法确定给定的进程 ID 是用于 32 位进程还是 64 位进程?我正在使用 Powershell v3.0
最佳答案
尝试这个:
Add-Type -MemberDefinition @'
[DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool IsWow64Process(
[In] System.IntPtr hProcess,
[Out, MarshalAs(UnmanagedType.Bool)] out bool wow64Process);
'@ -Name NativeMethods -Namespace Kernel32
Get-Process -Id $id | Foreach {
$is32Bit=[int]0
if ([Kernel32.NativeMethods]::IsWow64Process($_.Handle, [ref]$is32Bit)) {
"$($_.Name) $($_.Id) is $(if ($is32Bit) {'32-bit'} else {'64-bit'})"
}
else {"IsWow64Process call failed"}
}
应该在此处进行检查以确保操作系统是 64 位,否则所有进程都是 32 位。
关于Powershell:确定进程是 32 位还是 64 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23024659/