如何判斷我的應用程序(編譯爲視覺 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