Chúng tôi có một tập lệnh sử dụng platform module để phát hiện phiên bản hệ điều hành của các máy khách khác nhau của chúng tôi.Phát hiện Windows 8.1 bằng Python?
Xem qua nguồn cho platform.py, tôi có thể thấy rằng trên các hệ thống Windows, nó đang sử dụng sys.getwindowsverion(). Thật không may, trên Windows 8.1 hệ thống, mà chức năng báo cáo cụ thể:
>>> sys.getwindowsversion()
sys.getwindowsversion(major=6, minor=2, build=9200, platform=2, service_pack='')
Windows 8.1 là 6.3.9600:
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Windows\system32>ver
Microsoft Windows [Version 6.3.9600]
Vì vậy, tôi nhận ra tôi có thể viết thêm một số logic xung quanh cuộc gọi của tôi để platform.release(), và nếu điều đó trả về 8, hãy kiểm tra thứ cấp và cố gắng chạy ver
, nhưng điều đó có vẻ hơi phức tạp.
Có ai biết cách nào tốt hơn không?
Chạy ActivePython 2.7.2.5 trong trường hợp quan trọng. . .
Windows có thể nói dối bạn, nếu nó quyết định bạn nên chạy trong chế độ win8. Điều này có thể là trường hợp cho các ứng dụng win8 trong hiện đại mà chưa được cập nhật lên 8.1, nhưng tôi nghi ngờ bạn đang chạy python trong hiện đại. – ohmusama
Ồ, xúc phạm. Python sử dụng hàm [MS 'GetVersionEx()' (http://msdn.microsoft.com/en-us/library/windows/desktop/ms724451 (v = vs.85) .aspx) cho việc này. Thực hiện theo các liên kết: có vẻ họ đang thay thế nó với một mess không thể sử dụng các chức năng mới :-( –
FYI, tôi [đã mở một báo cáo lỗi về điều này] (http://bugs.python.org/issue19143) trên trình theo dõi lỗi Python Trong khi chờ đợi, hãy làm bất cứ điều gì hoạt động ;-) –