IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

Comment obtenir la version de Windows (> 6.2 alias Windows 8)


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 265
    Points : 290
    Points
    290
    Par défaut Comment obtenir la version de Windows (> 6.2 alias Windows 8)
    La solution proposée dans la FAQ Delphi (Comment-obtenir-la-version-de-Windows) pour déterminer la version de Windows est dépréciée depuis Windows 6.2(= Windows 8) (GetVersionEx sur msdn).

    L'alternative : VerifyVersionInfo qui permet de comparer une version à l'OS fonctionne bien... jusqu’à Windows 10...

    L'implémentation que j'avais faite il y a un moment fonctionne. D'autres implémentations trouvées sur le web fonctionnent... jusqu’à Windows 10...
    Mon implémentation ou d'autres que j'ai essayé me renvoient toujours Windows 6.2 ( = Windows 8).

    la commande ver, sur la machine de test renvoie :
    Microsoft Windows [version 10.0.10162]

    via Delphi 2006

    Quelqu'un a une idée ?

    Remarque : je sais qu'il ne faut pas tester une version d'OS pour activer une fonctionnalité ou non. Ici ce n'est que pour compléter le diagnostique de nos applications Ce n'est pas ultra-critique mais c'est moche.

    Z

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 265
    Points : 290
    Points
    290
    Par défaut
    selon la discussion manifest-madness (blog msdn) ca ne sera peut etre pas possible :
    With Windows 10 VerifyVersionInfo is now subject to the same manifest-based behavior as GetVersion(Ex): by default IsWindowsrGreater and earlier will return 'true' as expected on Windows 10, but both IsWindows8Point1OrGreater and IsWindows10OrGreater will return 'false' without the appropriate GUIDs present in the <compatibility> section.
    Je n'avais pas précisé que dans nos application nous avons rarement un manifeste pour la dernière versions de Windows (en général une version de retard, en période de sortire de Windows 2 versions).

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 671
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 671
    Points : 13 065
    Points
    13 065
    Par défaut
    Cette modification a été apportée sous Windows 8.1, il faut obligatoirement un manifest à jour sous peine de ne récupérer que la version la plus élevée définie (ou Windows 8 si rien n'est défini) ceci afin d'améliorer la compatibilité des anciennes versions.

    Citation Envoyé par Zatoobux Voir le message
    Remarque : je sais qu'il ne faut pas tester une version d'OS pour activer une fonctionnalité ou non.
    Et pourquoi cela ? Ne pas le faire c'est se limiter à l'utilisation d'anciennes API/interfaces sans pouvoir tirer parti des dernières évolutions.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 265
    Points : 290
    Points
    290
    Par défaut
    Depuis Windows 8.1 il y a une alternative est tu peux obtenir la version de l'OS même sans le manfiste... Effectivement, ca ne sera peut être plus possible du tout. Ca ne me dérange pas vraiment je ne l'utilise que pour du diagnostic.


    pourquoi ne pas utiliser la version, par exemple : dans la msdn
    Remarks

    Identifying the current operating system is usually not the best way to determine whether a particular operating system feature is present. This is because the operating system may have had new features added in a redistributable DLL. Rather than using GetVersionEx to determine the operating system platform or version number, test for the presence of the feature itself. For more information, see Operating System Version.
    ... mais c'est un autre sujet... ...

  5. #5
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 671
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 671
    Points : 13 065
    Points
    13 065
    Par défaut
    Et quelle est cette alternative ?

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 265
    Points : 290
    Points
    290
    Par défaut
    L'alternative, comme indiquée dans le message initial : VerifyVersionInfo .

    Un exemple d'implémentation : http://www.tek-tips.com/faqs.cfm?fid=7848.
    Ce n'est pas exactement comme ca j'ai initialement implémenté. J'ai essayé cette solution. Exactement le même problème : ca fonctionne indépendamment du manifest jusqu'a Windows 8.2. Pour Windows 10 dépend du manifest et on revient au même problème qu'avec la fonction getversionEx.


    Ca semble également jouable en utilisant WMI. Suis dessus...

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 265
    Points : 290
    Points
    290
    Par défaut
    Ca fonctionne très bien via WMI (WMI Tasks: Operating Systems)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [10] comment obtenir une version d'evaluation ?
    Par skystef dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 29/05/2007, 10h01
  2. Comment obtenir une version de Vista complète et gratuite
    Par orafrance dans le forum Windows Vista
    Réponses: 10
    Dernier message: 21/05/2007, 02h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo