Question

Je suis en train d'écrire une fonction qui imprime des informations détaillées version de Windows, la sortie peut être un tuple comme ceci:

('32bit', 'XP', 'Professional', 'SP3', 'English')

Il soutiendra Windows XP et plus. Et je suis coincé à obtenir l'édition de Windows, par exemple, "Professional", "Home Basic", etc.

platform.win32_ver () ou sys.getwindowsversion () ne le fait pas pour moi.

win32api.GetVersionEx (1) presque coups, mais il ressemble à n » t me dire assez d'informations.

Alors j'ai vu GetProductInfo () , mais semble que ce soit pas mis en œuvre pywin32.

Les conseils?

Était-ce utile?

La solution

Vous pouvez utiliser ctypes pour accéder à une fonction WinAPI. GetProductInfo() est windll.kernel32.GetProductInfo.

Je trouve un Python version (sous licence GPL, mais vous pouvez voir l'utilisation des fonctions là-bas) du MSDN "Obtenir la version du système" exemple .

Autres conseils

Si ctypes ne fonctionne pas (en raison de 32 vs 64 bits?), Ce hack devrait:

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())

Ou tout simplement lire le Registre:

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])

Ou utilisez ceci:

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

J'ai essayé quelques-unes des solutions ci-dessus, mais je cherchais quelque chose qui m'a donné « Windows XP » ou « Windows 7 ». Il y a quelques méthodes plate-forme qui exposent encore plus d'informations.

import platform
print platform.system(),platform.release()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top