8
votes

Python: Obtenez la version Windows OS et l'architecture

Tout d'abord, je ne pense pas que cette question soit un duplicata de
Détecter 64 bits OS (Windows) à Python

parce que je n'ai pas été résolu complètement.

La seule réponse approche est:

Utiliser sys.getwindowsversion () ou l'existence de programfiles (x86) ( si 'programfiles (x86)' in os.environ )

mais:

  • Est-ce que la variable de l'environnement Windows programmures (x86) fiable? Je crains que quiconque puisse la créer, même s'il n'est pas présent sur le système.
  • Comment utiliser sys.getwindowsversion () afin d'obtenir l'architecture?

    concernant sys.getwindowsversion () :
    Le lien http://docs.python.org/library/sys.html# Sys.getwindowsversion
    nous conduit à http://msdn.microsoft.com /en-us/library/ms724451%28vs.85%29.aspx
    Mais je ne vois rien de liaison à l'architecture (32bit / 64bit).
    De plus, l'élément de plate-forme dans le tuple retourné semble être indépendant de l'architecture.

    Une dernière note: je recherche une solution utilisant Python 2.5 et une version Windows à partir de Windows XP

    Merci!

    EDIT:
    Les informations pertinentes sont disponibles ici
    http://msdn.microsoft.com/ EN-US / Bibliothèque / MS724340% 28V = vs.85% 29.aspx
    Mais comment puis-je obtenir cela avec python?

    EDIT2: Sur une fenêtre de 64 bits, avec un interprète de python 32 bits:

    • OS.Environ ["Processor_architecture"] retourne
      • 'x86'
      • plate-forme.architecture () renvoie
        • ('32bit', 'windowspe')

5 commentaires

Que voulez-vous savoir exactement? La taille de l'architecture ou l'endroit où les programmes sont stockés?


Comme le dit le titre de la question: Taille de l'architecture et de la version


Ces réponses sont correctes et la solution à, c'est simplement si vous exécutez un programme de 32 bits sur 64 bits, Windows émule ces données. Donc, le Winapi renvoie une version incorrecte pour vous.


Je cherche des réponses correctes indépendamment de l'architecture de la cible d'interprète Python. C'est l'architecture du système d'exploitation que je cherche.


Architecture unique sous-ensemble: Stackoverflow.com/Questtions/7491391/... 32 VS 64 Sous-ensemble: Stackoverflow.com/questions/1405913/...


5 Réponses :


2
votes

1 Une autre option (sondage WMI pour Osarchitecture):

Si vous installez pywin32 a > et le module Python WMI sur le dessus Vous devriez pouvoir faire (mais Seulement de Windows Vista et Up!): P>

import wmi
c = wmi.WMI()
for os in c.Win32_OperatingSystem():
    print os.osarchitecture



6
votes

Ces variables montrent votre statut d'exécution actuel sous Windows: xxx


1 commentaires

Ça a l'air bien! Savez-vous si un utilisateur peut modifier ces variables d'environnement (événement inconsciemment)?



24
votes

Je pense que le module de plate-forme est vraiment le meilleur moyen d'obtenir cette information. XXX

Je ne vois pas où obtenir une réponse ferme sur des fenêtres 32/64 bits d'ici, donc Je suggère ceci: xxx

ou, si vous devez savoir quelle saveur de Python vous exécutez (comme vous pouvez exécuter X32 Python sous X64 Windows): < Pré> xxx


1 commentaires

Platform.Machine () Retourne maintenant 32/64 bit sous i386 / amd64 . plate-forme.uname () retournera la version et l'architecture du système d'exploitation dans un seul appel.



1
votes

J'espère que cela peut résoudre le problème Je l'ai essayé sur mes fenêtres 8.1 64 bits et retourne la valeur AMD64 pour moi xxx

vient d'exécuter ce code Si vous travaillez sur une machine Windows 64 bits, il s'agira d'AMD64

ou si vous travaillez sur 32 bits, il imprimera AMD32

J'espère que ce code peut aider à résoudre ce problème complètement


1 commentaires

C'est la même chose que d'obtenir une variable d'environnement. La seule différence est qu'elle n'est pas affectée par une commande définie.



0
votes

Voici une belle commande Python One-Liner. XXX


0 commentaires