OSのバージョンを調べる
Windowsに限らず、OperationSystemのバージョンを調べてみましょう。
どんなOSが調べられるのか?
インタプリタシェルを立ち上げて次のように入力してください。
>>> import System
>>> dir(System.PlatformID)
出力画面:
['CompareTo', 'Equals', 'Format', 'GetHashCode', 'GetName', 'GetNames', 'GetType', 'GetTypeCode', 'GetUnderlyingType', 'GetValues', 'HasFlag', 'IsDefined', 'MacOSX', 'MemberwiseClone', 'Parse', 'ReferenceEquals', 'ToBoolean', 'ToByte', 'ToChar', 'ToDateTime', 'ToDecimal', 'ToDouble', 'ToInt16', 'ToInt32', 'ToInt64', 'ToObject', 'ToSByte', 'ToSingle', 'ToString', 'ToType', 'ToUInt16', 'ToUInt32', 'ToUInt64', 'TryParse', 'Unix', 'Win32NT', 'Win32S', 'Win32Windows', 'WinCE', 'Xbox', '__and__', '__class__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__invert__', '__le__', '__lt__', '__ne__', '__new__', '__nonzero__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__xor__', 'value__']
この中に.NET Frameworkで調べられるOSの情報が入っています。OSっぽい名前は"MacOSX"、"Unix"、"Win32NT"、"Win32S"、"Win32Windows"、"WinCE"、"Xbox"なんかがありますね。"Xbox"があるところが、さすがMicrosoftといった感じでしょうか。
MacOSX、Unixは今Windows以外のOSといったら、このどちらかでしょう。
Win32NTはWindowsNT、Windows2000、WindowsXP、WindowsVista、Windows7という今の主流のWindowsですね。
Win32Sはやっと32ビットで動くグラフィカルなインターフェースがでてきた頃、16ビットOSであるWindows3.1上で、32ピットのソフトを動かすための拡張モジュールみたいなものでしょうか。今は64ビットOSと言われていますので、これを知っている人はパソコン暦15年以上になっているでしょうか。
Win32Windowsは、Windows3.1からWindowsNTに移行する期間に16ビットと32ビットの両方のソフトが扱えるOSとしてあったものです。Windows95、Windows97、WindowsMeなんかがそれに当たります。
WinCEは、今のスマートフォンの先駆けとなった端末機用に開発されたOS。Xboxは言わずもがなMicrosoftのゲーム機です。
さて話がかなり脱線して、Windowsの備忘録みたいになってしまいましたが、これらを調べられるスクリプトを作ってみたいと思います。
OSのバージョン情報はSystem名前空間のEnvironmentクラスのOSVersionを使います。
import System
from System.Environment import OSVersion
print OSVersion
raw_input()
出力画面:
Microsoft Windows NT 5.1.2600 Service Pack 3
実は私のOSはまだWindowsXPですが、上の表記だとなんだか分かりませんね。上記は、Product Progression と呼ばれ細かくみると次の意味が書かれています。
PlatfromID =Windows NT
Major Revision = 5
Minor Revision = 1
Build Number = 2600
Service Pack = 3
この数字から、慣用名の"Windows XP"を出力するようにしてみましょう。
まずProduct Progression と慣用名の関係は次の通りです。
Product Progression | 慣用名 |
PlatfromID: Windows | |
Windows 4.0 | Windows 95 |
Windows 4.10 | Windows 98 |
Windows 4.90 | Windows Me |
PlatfromID: Windows NT | |
Windows NT 3.1 | Windows NT 3.1 |
Windows NT 3.5 | Windows NT 3.5 |
Windows NT 3.51 | Windows NT 3.51 |
Windows NT 4.0 | Windows NT 4.0 |
Windows NT 5.0 | Windows 2000 |
Windows NT 5.1 | Windows XP |
Windows NT 5.2 | Windows Server 2003 |
Windows NT 6.0 | Windows Vista |
Windows NT 6.1 | Windows 7 |
Major Revision、Minor Revsionの情報は、それぞれVersion.Major、Version.Minorより取得できます。これらの情報よりOSの慣用名を表示するスクリプトを書いてみます。