最終的な答えは、ソースコードのPythonインタプリタの正確なバージョンに記載されています。私はCPython 2.7.1を使用しています。私は、Windows XPの「XP」以外release
値を参照してください期待していない、このコードを読んだ後
winver = GetVersionEx()
maj,min,buildno,plat,csd = winver
version = '%i.%i.%i' % (maj,min,buildno & 0xFFFF)
if hasattr(winver, "service_pack"):
if winver.service_pack != "":
csd = 'SP%s' % winver.service_pack_major
else:
if csd[:13] == 'Service Pack ':
csd = 'SP' + csd[13:]
if plat == VER_PLATFORM_WIN32_WINDOWS:
regkey = 'SOFTWARE\\Microsoft\\Windows\\CurrentVersion'
# Try to guess the release name
if maj == 4:
if min == 0:
release = '95'
elif min == 10:
release = '98'
elif min == 90:
release = 'Me'
else:
release = 'postMe'
elif maj == 5:
release = '2000'
elif plat == VER_PLATFORM_WIN32_NT:
regkey = 'SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion'
if maj <= 4:
release = 'NT'
elif maj == 5:
if min == 0:
release = '2000'
elif min == 1:
release = 'XP'
elif min == 2:
release = '2003Server'
else:
release = 'post2003'
elif maj == 6:
if hasattr(winver, "product_type"):
product_type = winver.product_type
else:
product_type = VER_NT_WORKSTATION
# Without an OSVERSIONINFOEX capable sys.getwindowsversion(),
# or help from the registry, we cannot properly identify
# non-workstation versions.
try:
key = RegOpenKeyEx(HKEY_LOCAL_MACHINE, regkey)
name, type = RegQueryValueEx(key, "ProductName")
# Discard any type that isn't REG_SZ
if type == REG_SZ and name.find("Server") != -1:
product_type = VER_NT_SERVER
except WindowsError:
# Use default of VER_NT_WORKSTATION
pass
if min == 0:
if product_type == VER_NT_WORKSTATION:
release = 'Vista'
else:
release = '2008Server'
elif min == 1:
if product_type == VER_NT_WORKSTATION:
release = '7'
else:
release = '2008ServerR2'
else:
release = 'post2008Server'
else:
if not release:
# E.g. Win3.1 with win32s
release = '%i.%i' % (maj,min)
return release,version,csd,ptype
:ここでは無料でダウンロードでき、そのソースコードは(Lib/platform.py
で見つかった)関連するコードですボックス。
出典
2011-07-25 17:48:39
NPE
代替案として、「if」LOCALAPPDATAが「os.environ: 'にない場合は? –
@altieありがとうございますLOCALAPPDATAがいくつかの設定で追加のセキュリティレイヤーとして存在しないことがありますので、私はWIN7ではLOCALAPPDATAではないことを知りたいと思っています – PyNEwbie
ShgetFolderPathなどでローカルappdataなどのものを取得する必要があります。シェル関数。それは常に正しい結果を提供します。 OSについても心配する必要はありません。 (方法については、[this](http://ginstrom.com/scribbles/2008/09/26/retrieving-common-windows-folder-names-with-python/)のようなものを参照してください) –