2008-09-18 80 views
5

我想根據運行的平臺爲我的用戶提供正確的升級版本的鏈接,因此我需要知道我目前是在x86操作系統還是在x64操作系統上運行。如何判斷我是使用.NET的x64還是x86?

我發現的最好的方法是使用Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"),但我認爲會有一些內置的設施?

+1

你應該接受一個答案或解釋你最終做了什麼並接受。 – 2009-12-10 14:07:01

回答

0

用Marshal.SizeOf檢查IntPtr的大小。 32位= 4字節,64位= 8字節。

編輯:我不確定這是你在再次閱讀問題後尋找什麼。

+0

這將區分32位和64位平臺,但64位平臺可能是Itanium而不是x64。 (不太可能,我知道,但可能。) – millenomi 2008-09-18 08:22:15

+0

你不需要使用Marshal.SizeOf,你可以使用IntPtr.Size – Wilka 2008-11-17 15:32:36

+1

-1:這告訴這個.NET進程是否是x64 – 2009-12-10 14:03:50

-2

檢查只是IntPtr.Size。您需要將目標平臺作爲AnyCPU。

from here

4

呼叫IsWow64Process找出如果您的32位過程在WOW64運行64位操作系統上。你可以撥打GetNativeSystemInfo找出它到底是什麼:wProcessorArchitecture memberSYSTEM_INFO將爲PROCESSOR_ARCHITECTURE_INTEL爲32位,PROCESSOR_ARCHITECTURE_AMD64爲x64和PROCESSOR_ARCHITECTURE_IA64爲英特爾的安騰。

相關問題