Salut à tous,
Problème étrange que celui-ci : une application correctement manifest-ée, compatible Windows 10, me retournait une version 6.1 (Seven)
J'utilise habituellement GetVersionEx mais voulais voir ce que retournait TOSVersion. Je reviens donc à GetVersionEx mais même constat, 32 ou 64 bits, toujours 6.1 !
Windows 10 Anniversary ayant apporté son lot de "petites" incompatibilités, je copie cet exe dans Program Files (on ne sait jamais) et boum... version 10 !
Je relance cet exe depuis le répertoire de debug (hors Delphi) et... 10 aussi
Constatation : lancer une app depuis Delphi (avec ou sans debug) entraîne l'impossibilité de récupérer une version correcte de l'OS.
A tout hasard, je contrôle encore le manifest de Delphi (Berlin), on ne sait jamais, peut-être que le nouveau processus hérite des privilèges du processus parent mais aussi de son niveau de compatibilité. Mais non, Delphi est bien déclaré compatible Windows 10.
Bref quelque chose de pas net la derrière... à voir si cela se produit aussi avec les versions antérieures de Delphi.
Mais c'est pas fini !
J'avais effectivement besoin de tester Windows 10 Anniversary. La version étant toujours 10.0, c'est le build qu'il faut contrôler : 14393 correspond à la version 1607 (2016, juillet. En passant, Microsoft est en train de nous refaire un bogue de l'an 2000 avec ces années sur deux chiffres, vivement 2100 !).
Mais TOSVersion.Build renvoie "0" ! Je contrôle l'implémentation de TOSVersion et étonnamment, après un GetVersionEx standard, le build est remis à zéro si l'OS est supérieur à 6.1, une obscure fonction NetWkstaGetInfo récupérant à nouveau les versions majeure et mineure est lancée et si tout s'est bien passé, ben... le build reste à zéro, sinon il est à nouveau récupéré mais en lisant cette fois-ci les infos de version de kernel32.dll
Pas net non plus, à revoir !
Partager