本文介绍了Powershell:确定进程是 32 位还是 64 位的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有办法确定给定的进程 ID 是用于 32 位进程还是 64 位进程?我正在使用 Powershell v3.0
Is there a way to determine if a given process ID is for a 32 or a 64 bit process? I'm using 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 位.
There should be a check in here to ensure the OS is 64-bit otherwise all processes would be 32-bit.
这篇关于Powershell:确定进程是 32 位还是 64 位的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!