Identify the x64 Windows for IronPython

そういえば Opera のインストール先を得る必要があったんだ。
結局 x86 か x64 かをコードで見分ける必要があるのだってことだね。

チャチャっと探してみると WMI を使えば簡単だと解った。

C# WMI
WMIを使ってOSの情報を取得する: .NET Tips: C#, VB.NET, Visual Studio

ここらを見ると .NET 経由でも WMI から様々な情報が得られるようで。
私はとりあえず x64 かどうかさえ見分けられればいいので下記のように。

#-*- coding:utf-8 -*-

"""
    cpu_check.py
    Check Windows Architecture
"""

import clr

clr.AddReference("System.Management")

from System import *
from System.Management import *

# Create ManagementClass
mc = ManagementClass("Win32_Processor")
# Get ManagementObjectCollection
moc = mc.GetInstances()
# mo is ManagementObject
for mo in moc:
    bit = mo["AddressWidth"]
    if bit == 32:
        print "x86 Windows"
    elif bit == 64:
        print "x64 Windows"
    else:
        print "Unknown Windows"

何故か IronPython コード、だってコンパイルするのが面倒くさい。
Win32_Processor 指定で x64 も判別できるようだ。
以下私の環境でテスト。

My 32bit Windows Vista
check_x86

My 64bit Windows 7
check_x64

これで見分けは簡単に行えそうだ。
でももっと簡単な方法がありそうな…