如何以编程方式确定特定进程是 32 位还是 64 位
我的 C# 应用程序如何检查特定应用程序/进程(注意:不是当前进程)是否在 32 位或 64 位模式下运行?
例如,我可能想按名称(即 abc.exe
)或根据进程 ID 号查询特定进程。
How can my C# application check whether a particular application/process (note: not the current process) is running in 32-bit or 64-bit mode?
For example, I might want to query a particular process by name, i.e, abc.exe
, or based on the process ID number.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
我见过的更有趣的方法之一是:
要查明其他进程是否在 64 位模拟器 (WOW64) 中运行,请使用以下代码:
One of the more interesting ways I've seen is this:
To find out if OTHER processes are running in the 64-bit emulator (WOW64), use this code:
如果您使用的是 .Net 4.0,则它是当前进程的单行代码:
请参阅Environment.Is64BitProcessProperty (MSDN)。
If you're using .Net 4.0, it's a one-liner for the current process:
See Environment.Is64BitProcessProperty (MSDN).
所选答案不正确,因为它没有执行所要求的操作。它检查进程是否是在 x64 操作系统上运行的 x86 进程;因此对于 x64 操作系统上的 x64 进程,它将返回“false”。
此外,它不能正确处理错误。
这里有一个更正确的方法:
The selected answer is incorrect as it doesn't do what was asked. It checks if a process is a x86 process running on x64 OS instead; so it will return "false" for a x64 process on x64 OS.
Also, it doesn't handle errors correctly.
Here is a more correct method:
您可以检查指针的大小以确定它是 32 位还是 64 位。
You can check the size of a pointer to determine if it's 32bits or 64bits.
这是单行检查。
Here is the one line check.
我喜欢使用这个:
这样,如果我需要查找或验证文件,我可以轻松编写:
I like to use this:
This way if I need to locate or verify a file I can easily write: