11

Win8.1 và Win8 có cùng một phiên bản hệ điều hành. Làm thế nào chúng ta có thể kiểm tra xem hệ điều hành hiện tại là Win8 hay Blue? Các Environment.OSVersion là cho chúng ta những kết quả tương tự:Làm thế nào chúng ta có thể kiểm tra xem hệ điều hành hiện tại là win8 hoặc blue

Environment.OSVersion 6.2.9200.0 Environment.OSVersion.Version 6.2.9200.0 Environment.OSVersion.Version.Major 6 Environment.OSVersion.Version.Minor 2

+0

Đó là một phát hành trước. Những thứ như OSVersion có thể thay đổi ... – Offler

+2

Kiểm tra 'Environment.OSVersion.Version.Revision'. Nó * nên * là 9200 cho Win8, và 9431 cho Xem trước Win8.1. – dlev

+0

thats lạ! Xem trước Pro8.1 Pro của tôi –

Trả lời

19

Windows 8.1 sẽ lie to you và cho bạn biết nó là Window 8. Thay đổi đó lời nói dối yêu cầu chỉnh sửa tệp kê khai được nhúng trong chương trình của bạn để Windows biết bạn không muốn bị nói dối. Project + Add New Item, chọn mẫu File Manifest File. Copy dán nói dài giòng này bên dưới <application> phần tử:

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
    <application> 
     <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> 
    </application> 
</compatibility> 
+0

chính xác những gì tôi đã cố gắng tìm, cảm ơn –

+0

muốn tôi có thể cung cấp cho 7 upvotes – yano

2

Tôi tìm thấy một giải pháp dưới đây Registry Key

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion 
0

Kể từ khi tôi đã không thể có được giải pháp làm việc Hans', tôi đã tạo ra một giải pháp khác nhau:

bool _IsWindows8Point1OrGreater = Type.GetType("Windows.UI.Xaml.Controls.Flyout, Windows.UI.Xaml, ContentType=WindowsRuntime", false) != null; 
+0

Chỉ cần thử nghiệm trên win8 và 8,1 là tốt, cả hai trở về sai. – fishmong3r

+1

Cảm ơn bạn đã downvoting sau 7 tháng. Tôi vừa thử nghiệm trên Windows 8.1 và Windows Phone 8.1, cả hai đều trả về true. Giờ thì sao? Phần "Thời gian chạy" có thể đáng chú ý: Giải pháp dành cho RT. –

0

Trong trường hợp Win8.1 phiên bản là 6.3. *

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx

Nếu bạn đang sử dụng GetVersionEx() api [từ kernel32.dll] để nhận phiên bản Win8.1, giá trị lại được bật sẽ là 6.2. * trong khi giá trị phiên bản phải là 6.3. *

Giải pháp cho điều này là bạn cần thêm tệp kê khai vào .net exe hoặc os.dll để nói rằng symhelp sẽ chạy trên windows 8.1 , có thể làm cho .net System.Environment.OSVersion.Version hoạt động chính xác.

Tuy nhiên, bạn cần phải thử nghiệm trên nhiều hệ điều hành.

http://msdn.microsoft.com/en-us/library/windows/desktop/dn302074(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724429(v=vs.85).aspx