2011-10-27 7 views
0

誰もがWindows版の決定方法を知っていますか?Squish QTを使用してPythonでWindows版を判別する方法は?

など。 32ビットおよびWindowsの64ビットの両方のために: - WindowsのXPホーム/プロフェッショナル - Windows Vistaのビジネス/アルティメット...など - Windows 7のHome Basicを/ホームプレミアム/プロフェッショナル/アルティメット...など

私はかしらレジストリまたはPython APIからこの情報を取得できますか?

ありがとうございました。

+0

http://stackoverflow.com/questions/2816821/identify-windows-editions-with-python –

+0

Iトンを参照してください。純粋なPythonを使用している場合は、この "https://bitbucket.org/gastlygem/wistron/src/c16e2cfe1445/wistron.preload/wistron/preload/ostype.py"を解決する必要があります。 私はPython APIを完全にサポートしていない可能性があるSquish QTでPythonを使用しているので、ctypesのインポートに失敗しました。だから、可能であればレジストリから版を取り出すことを考えているのですか? – Cthoong

答えて

0

ctypesの場合には(?起因する32 64対ビットに)動作しませんを参照、このハックはすべき:

def get_Windows_name(): 
    import subprocess, re 
    o = subprocess.Popen('systeminfo', stdout=subprocess.PIPE).communicate()[0] 
    try: o = str(o, "latin-1") # Python 3+ 
    except: pass 
    return re.search("OS Name:\s*(.*)", o).group(1).strip() 

print(get_Windows_name()) 

それとも、レジストリを読み取る:

try: import winreg 
except: import _winreg as winreg 
with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Microsoft\Windows NT\CurrentVersion") as key: 
    print(winreg.QueryValueEx(key, "EditionID")[0]) 

または使用この:

from win32com.client import GetObject 
wim = GetObject('winmgmts:') 
print([o.Caption for o in wim.ExecQuery("Select * from Win32_OperatingSystem")][0]) 
+0

"Key" + "Values" + "Data"でWindows XP Pro SP3のレジストリを検索すると、 "EditionID"に関連するものは見つかりません... – Cthoong

+0

はい、 "EditionID"はVistaと7 !!! XPのように見えますが、誰がどこのキーを知っていますか? – Cthoong

+0

インターネットでの検索と調査には、ほとんどのXPマシンでそのエディションを示す1つのファイルがあります。 >> "C:\ WINDOWS \ system32 \ prodspec.ini" ...このファイルは、Vista上では使用できません。 – Cthoong

1
+0

実際に私はテストの自動化のためにSquish QTでPythonを使用しています。 platform.win32.ver()を試しましたが、返信する>> ( "、"、 "、") このリンクのリストも試しました "http://docs.python.org/library/platform.html# windows-platform "も役に立ちません。 – Cthoong