gpt4 book ai didi

.net - 如何确定 System.Diagnostics.Process 是 32 位还是 64 位?

转载 作者:可可西里 更新时间:2023-11-01 13:29:05 31 4
gpt4 key购买 nike

我试过:

process.MainModule.FileName.Contains("x86")

但是它为 x64 进程抛出了一个异常:

Win32Exception: Only a part of the ReadProcessMemory ou WriteProcessMemory request finished

最佳答案

您需要调用IsWow64Process通过 P/调用:

[DllImport( "kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi )]
[return: MarshalAs( UnmanagedType.Bool )]
public static extern bool IsWow64Process( [In] IntPtr processHandle, [Out, MarshalAs( UnmanagedType.Bool )] out bool wow64Process );

这里有一个帮助程序,可以更轻松地调用:

public static bool Is64BitProcess( this Process process )
{
if ( !Environment.Is64BitOperatingSystem )
return false;

bool isWow64Process;
if ( !IsWow64Process( process.Handle, out isWow64Process ) )
throw new Win32Exception( Marshal.GetLastWin32Error() );

return !isWow64Process;
}

关于.net - 如何确定 System.Diagnostics.Process 是 32 位还是 64 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3575785/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com