2008-09-18 10 views
5

Chciałbym zaoferować użytkownikom poprawne linki do ulepszonej wersji mojego programu w oparciu o platformę, na której działają, więc muszę wiedzieć, czy aktualnie korzystam z systemu operacyjnego x86 czy x64.Jak mogę sprawdzić, czy korzystam z x64 lub x86 przy użyciu .NET?

Najlepsze, co znalazłem, to używanie Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"), ale myślę, że będzie w tym jakiś wbudowany obiekt?

+1

Powinieneś zaakceptować odpowiedź lub wyjaśnić, co zrobiłeś w końcu i zaakceptować to. –

Odpowiedz

0

Sprawdź rozmiar IntPtr z Marshal.SizeOf. 32 bit = 4 bajty, 64-bitowe = 8 bajtów.

Edytuj: Nie jestem pewien, czy tego właśnie szukasz po ponownym przeczytaniu pytania.

+0

To rozróżniałoby platformę 32-bitową i 64-bitową, chociaż platformą 64-bitową może być np. Itanium, a nie x64. (Mało prawdopodobne, wiem, ale możliwe). – millenomi

+0

Nie musisz używać Marshal.SizeOf, możesz po prostu użyć IntPtr.Size – Wilka

+1

-1: To mówi, czy ten proces .NET jest x64 –

-2

Sprawdź tylko IntPtr.Size. Musisz mieć platformę docelową jako AnyCPU.

from here

+0

-1: Duplikat odpowiedzi Leppiego (i zła z tego samego powodu) –

+0

(Rozumiem, że jest inny, ale najlepszym miejscem do wskazania tego jest komentarz do drugiej odpowiedzi, ale zdaję sobie również sprawę, że prawdopodobnie nie było nawet komentarzy w ciągu dnia i/lub nie masz wystarczającej liczby przedstawicieli, aby je zrobić ...) –

4

połączeń IsWow64Process aby dowiedzieć się, czy proces 32-bit działa w WOW64 na systemie operacyjnym 64-bitowym. Możesz zadzwonić pod numer GetNativeSystemInfo, aby dowiedzieć się dokładnie, co to jest: wProcessorArchitecture member z będzie PROCESSOR_ARCHITECTURE_INTEL dla 32-bitowych, PROCESSOR_ARCHITECTURE_AMD64 dla x64 i PROCESSOR_ARCHITECTURE_IA64 dla procesorów Itanium firmy Intel.

+1

+1: Wyraźnie o tym, co robi każde wezwanie, nie wprowadzając w błąd –

0

Można określić wiele zmiennych środowiskowych, poprzez użyte w C# - How to get Program Files (x86) on Windows 64 bit [A stało się to w zależności mnie lepiej niż odpowiedź Mike'a, który ja daje +1 jak zdarza mi się być zainteresowany w znalezieniu nazwy katalogu Program Files]

Powiązane problemy