2008-09-18 43 views
5

Tôi muốn cung cấp cho người dùng các liên kết chính xác đến phiên bản nâng cấp của chương trình dựa trên nền tảng mà họ đang chạy, vì vậy tôi cần biết liệu tôi hiện đang chạy trên hệ điều hành x86 hay hệ điều hành x64.Làm thế nào tôi có thể biết tôi đang sử dụng x64 hay x86 bằng .NET?

Điều tốt nhất tôi đã tìm thấy là sử dụng Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"), nhưng tôi nghĩ sẽ có một số thiết bị tích hợp sẵn cho điều này?

+1

Bạn nên chấp nhận câu trả lời hoặc giải thích những gì bạn đã làm cuối cùng và chấp nhận điều đó. –

Trả lời

0

Kiểm tra kích thước của IntPtr với Marshal.SizeOf. 32 bit = 4 byte, 64 bit = 8 byte.

Chỉnh sửa: Tôi không chắc đây là những gì bạn đang tìm kiếm sau khi đọc lại câu hỏi.

+0

Điều này sẽ phân biệt giữa nền tảng 32 bit và 64 bit, mặc dù nền tảng 64 bit có thể là Itanium chứ không phải x64. (Không chắc chắn, tôi biết, nhưng có thể.) – millenomi

+0

Bạn không cần phải sử dụng Marshal.SizeOf, bạn chỉ có thể sử dụng IntPtr.Size – Wilka

+1

-1: Điều này cho biết quá trình .NET này là x64 –

-2

Chỉ kiểm tra IntPtr.Size. Bạn cần phải có nền tảng đích là AnyCPU.

from here

+0

-1: Sao chép câu trả lời của Leppie (và sai vì lý do tương tự) –

+0

(Tôi nhận ra sự khác biệt của nó, nhưng nơi tốt nhất để chỉ ra rằng là trong một bình luận về câu trả lời khác) Nhưng tôi cũng nhận ra rằng có lẽ thậm chí không bình luận trong ngày và/hoặc bạn không có đủ đại diện để làm cho họ ...) –

4

Gọi IsWow64Process để tìm hiểu xem quá trình 32-bit của bạn đang chạy trong WOW64 trên một hệ điều hành 64-bit. Bạn có thể gọi GetNativeSystemInfo để tìm hiểu chính xác nó là gì: wProcessorArchitecture member của SYSTEM_INFO sẽ là PROCESSOR_ARCHITECTURE_INTEL cho 32-bit, PROCESSOR_ARCHITECTURE_AMD64 cho x64 và PROCESSOR_ARCHITECTURE_IA64 cho Itanium của Intel.

+1

+1: Rõ ràng về những gì mỗi cuộc gọi, không gây hiểu lầm –

0

Bạn có thể xác định rất nhiều qua các biến môi trường được sử dụng trong C# - How to get Program Files (x86) on Windows 64 bit [Và điều này xảy ra cho phù hợp với tôi tốt hơn so với câu trả lời của Mike mà tôi +1 khi tôi tình cờ được quan tâm trong việc tìm kiếm các tên thư mục Program Files]

Các vấn đề liên quan