如何判断我的应用程序(编译为视觉 Studio 2008为任何CPU)是作为32位还是64位应用程序运行?如何判断我的应用程序是作为32位还是64位应用程序运行的?
回答
if (IntPtr.Size == 8)
{
// 64 bit machine
}
else if (IntPtr.Size == 4)
{
// 32 bit machine
}
我发现这个代码Martijn Boven该做的伎俩:
public static bool Is64BitMode() {
return System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr)) == 8;
}
很可能更有效的调用IntPtr.Size代替Marshal.SizeOf(typeof运算(IntPtr的)) – JaredPar 2008-11-05 19:20:22
我很乐意给+1到JaredPar的意见;我就是这么做的...... – 2008-11-05 20:32:02
感谢您发布答案,这很了解。我不打算改变当前接受的答案,因为这个问题最初是关于.NET 3.5的,但我会鼓励人们为你的答案投票。 – 2010-08-11 20:26:30
从微软此代码示例多功能一站式示例代码库可以回答你的问题:
Detect the process running platform in C# (CSPlatformDetector)
的CSPlatformDetector代码示例演示了以下任务 与平台检测:
- 检测当前操作系统的名称。 (例如“Microsoft Windows 7 Enterprise”)
- 检测当前操作系统的版本。 (例如“Microsoft Windows NT 6.1.7600.0”)
- 确定当前操作系统是否是64位操作系统。
- 确定当前进程是否是64位进程。
- 确定在系统上运行的任意进程是否为64位。
如果你只是想确定是否当前运行的进程是一个64位 过程中,可以使用Environment.Is64BitProcess属性,它是在.NET框架 4.
如果你新要检测的系统 上运行任意应用是否是一个64位的过程中,你需要确定操作系统位数,如果是64位的, 呼叫IsWow64Process()
与目标进程句柄:
static bool Is64BitProcess(IntPtr hProcess)
{
bool flag = false;
if (Environment.Is64BitOperatingSystem)
{
// On 64-bit OS, if a process is not running under Wow64 mode,
// the process must be a 64-bit process.
flag = !(NativeMethods.IsWow64Process(hProcess, out flag) && flag);
}
return flag;
}
在.net标准,你可以使用System.Runtime.InteropServices.RuntimeInformation.OSArchitecture
- 1. 如何判断应用程序是64位还是32位?
- 2. 如何判断应用程序是以32位还是64位模式运行?
- 3. 如何判断我写的程序是32位还是64位?
- 4. 如何检测Cocoa应用程序是32位还是64位?
- 5. 如何判断我的cygwin安装是32位还是64位?
- 6. 检查应用程序是建立在32位还是64位?
- 7. 检测C++应用程序是在32位还是在64位Windows上运行
- 8. 如何确定进程ID(PID)是32位还是64位应用程序?
- 9. 我在x86-64 PC上运行32位Windows。我应该下载32位还是64位的Python安装程序?
- 10. 32位应用程序如何在64位Mac上运行?
- 11. 我如何制作32位或64位应用程序?
- 12. 如何找到Android应用程序是32位或64位
- 13. 32位/ 64位Windows/Linux应用程序
- 14. 在VBScript中有一种方法可以判断它是作为32位还是64位进程运行的吗?
- 15. 从32位应用程序启动64位应用程序?
- 16. 如何判断我的现有Amazon EC2实例是32位还是64位?
- 17. 检查正在运行的进程是32位还是64位
- 18. 应该在应用程序中部署32位还是64位SQL Server Express?
- 19. 如何判断应用程序在C++中运行的位置
- 20. 是在64位Windows上运行的32位ASP.NET应用程序LARGEADDRESSAWARE
- 21. 在64位机器上运行32位.NET应用程序
- 22. 当我将64位应用程序安装到32位程序文件(x86)中时,64位应用程序是否将以32位方式工作
- 23. 64位Java应用程序:是64位操作系统,64位JRE和64位应用程序吗?
- 24. 如何从32位C++应用程序启动64位Java应用程序?
- 25. 64位Windows上的32位应用程序“无法找到运行该应用程序的运行时版本”
- 26. 如何使32位VB6应用程序适应64位Office?
- 27. 是否可以从32位应用程序访问64位dll?
- 28. 诊断与运行ASP.NET应用程序的问题为64位
- 29. 中的WinPE 3运行32个应用程序(Win7的)64位
- 30. 将32位Web应用程序作为WOW64在64位服务器上运行?
编译器不在中间扮演什么角色? – 2014-04-22 02:04:16