Come posso sapere se sto su x64 o x86 utilizzando .NET?
Domanda
Vorrei offrire ai miei utenti di correggere i link a una versione aggiornata del mio programma basato sulla piattaforma in esecuzione su, quindi ho bisogno di sapere se sono attualmente in esecuzione su un OS x86 o x64.
Il migliore che ho trovato è tramite Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE")
, ma io credo che ci sarebbe qualche funzionalità incorporata per questo?
Soluzione
Ambiente.Is64BitOperatingSystem e Ambiente.Is64BitProcess vengono introdotti nel .Rete 4.Per .NET 2 avrete bisogno di provare alcune delle altre risposte.
Altri suggerimenti
Chiamata IsWow64Process
per scoprire se il processo a 32 bit è in esecuzione in WOW64 su un sistema operativo a 64 bit.Si può chiamare GetNativeSystemInfo
per scoprire esattamente di cosa si tratta:il wProcessorArchitecture member
di SYSTEM_INFO
sarà PROCESSOR_ARCHITECTURE_INTEL
per la versione a 32-bit, PROCESSOR_ARCHITECTURE_AMD64
per x64 e PROCESSOR_ARCHITECTURE_IA64
per i processori Itanium.
Controllare la dimensione del IntPtr con il Maresciallo.SizeOf.32 bit = 4 byte, 64 bit = 8 byte.
Edit:Io non sono sicuro che questo è ciò che si sta cercando dopo la lettura di nuovo la domanda.
Si può determinare un sacco tramite variabili di ambiente come utilizzato in C# - Come ottenere Program Files (x86) su Windows a 64 bit [E questo è accaduto per i miei gusti meglio di Mike per la risposta che mi sono fatto +1, come mi capita di essere interessati a trovare la cartella dei File di Programma nome]
Controllare IntPtr.Size
.È necessario disporre di piattaforma di destinazione come AnyCPU.