Comment obtenir la version de l'OS dans Win8.1 comme GetVersion/GetVersionEx sont obsolètes?
J'ai scénarios où j'aimerais connaître le système d'exploitation majeur/mineur de version et le numéro de build etc.
À partir de windows 8.1 à partir de GetVersion
et GetVersionEx
ont été dépréciées, en déclarant:
[GetVersion/GetVersionEx peuvent être modifiés ou non disponible pour les versions postérieures à Windows 8.1. Au lieu de cela, utilisez la Version des fonctions d'assistance]
Aucun des version helper Api m'aider à obtenir le numéro de version de l'OS plutôt m'aider à les vérifier ou de les obtenir pour savoir si ma version est la même ou au-dessus de certains mentionné version. Ce qui peut être fait?
Je n'ai jamais encore connu de Microsoft pour supprimer une fonction de l'API, même quand il est obsolète, donc je dirais que continuer à l'utiliser si vous le souhaitez. Juste être conscient que dans les versions ultérieures de Windows, il se trouve sur le numéro de version, à moins que votre manifeste indique la compatibilité avec la version actuelle.
Il est WMI classe Win32_OperatingSystem
Ce que @Alex dit est bon. Vous pouvez toujours lire la version de la ressource de kernel32.
Quel est votre scénario ici exactement? Aussi, voir this débordement de pile de thread.
Je pense que vous devriez l'ajouter comme une réponse à cette question, car aucun de ces réponses a été de parler de la requête WMI
Il est WMI classe Win32_OperatingSystem
Ce que @Alex dit est bon. Vous pouvez toujours lire la version de la ressource de kernel32.
Quel est votre scénario ici exactement? Aussi, voir this débordement de pile de thread.
Je pense que vous devriez l'ajouter comme une réponse à cette question, car aucun de ces réponses a été de parler de la requête WMI
OriginalL'auteur Abhishek Jain | 2014-12-02
Vous devez vous connecter pour publier un commentaire.
L'API GetVersionEx() continue à travailler dans Windows 8.1+, mais Microsoft a modifié ses fonctionnalités. À partir de MSDN (l'emphase est mienne):
Ce que vous devez faire est d'ajouter le bon GUID(s) à votre demande.exe/.dll) binaires (via manifeste XML de l'information). En d'autres termes, si vous spécifiquement l'état de votre application prend en charge 8.1, GetVersionEx() retourne des informations adéquates lors de l'exécution sur Windows 8.1. Si vous ne le faites pas, GetVersionEx() vous mentir.
Voir Le ciblage de votre application Pour Windows 8.1 pour une liste de Guid.
Aussi couvert ici et ici.
GUID Liste pour les Paresseux
{e2011457-1546-43c5-a5fe-008deee3d3f0}
{35138b9a-5d96-4fbd-8e2d-a2440225f93a}
{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}
{1f676c76-80e1-4239-95bb-83d0f6d0da78}
{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}
Que pour Windows Server 2019, je ne suis pas sûr qu'un nouveau GUID a été libéré. S'il vous plaît commentaire si vous en savez plus!
Vous pouvez simplement ajouter l'un de vos projets paramètres. Voir par exemple ici: msdn.microsoft.com/en-us/library/ms235229%28v=vs.110%29.aspx
Gardez à l'esprit que si vous constamment mettre à jour votre application, éventuellement, votre volonté manifeste de ne pas inclure la "dernière" version de Windows et vous obtiendrez une version mensonge.
Aussi garder à l'esprit que, à moins de vous mettre à jour et tester votre application sur les dernières versions, il peut très probablement la rupture. Affaire au point: GetVersionEx() cesse de fonctionner comme prévu. C'est WAD.
Afin de cibler Windows 8.1, vous devez inclure le manifeste de l'application ou de l'inclure _NT_TARGET_VERSION=$ (_NT_TARGET_VERSION_LATEST) dans le fichier source. La Question est de savoir où mettre inclure _NT_TARGET_VERSION? qui fichier source?
OriginalL'auteur NuSkooler
Il y a une nouvelle fonction nommée GetProductInfo qui retourne la version d'infos.
Si vous voulez tester une version spécifique, vous devez utiliser même VerifyVersionInfo
Il est facile de créer une structure pour vérifier si une version du système d'exploitation est en cours d'exécution. VerifyVersionInfo prend à la version des structures et vous pouvez facilement vérifier VER_GREATER_EQUAL et VER_LESS_EQUAL
Également noter que GetVersionEx ne repose pas sur un Windows 8.1 système si vous définissez le bon OS soutenu entrée dans la compatibilité de l'article pour votre manifeste. Mais c'est peut être dans une future version de l'OS!
Voir Le ciblage de votre application Pour Windows 8.1 pour une liste de Guid. Également couverts ici.
GUID liste pour le manifeste de l'application
{e2011457-1546-43c5-a5fe-008deee3d3f0}
{35138b9a-5d96-4fbd-8e2d-a2440225f93a}
{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}
{1f676c76-80e1-4239-95bb-83d0f6d0da78}
{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}
Vous pouvez obtenir le service pack grand nombre avec VerifyVersionInfo. Je ne sais pas dans toute situation où l'OS numéro de build à l'intérieur d'un SP diffère...
GetProductInfo()
ne retourne pas la version de l'OS. Vous le passez dans la version d'OS, et il renvoie le type de produit de l'OS (professionnel, entreprise, centre de données, etc). Cela est clairement indiqué dans le documentation: "Récupère le type de produit pour le système d'exploitation sur l'ordinateur local, et des cartes du type pour les types de produit pris en charge par le système d'exploitation spécifiées."OriginalL'auteur xMRi
Vérifier cet article sur codeproject.com, Il fonctionne parfaitement sous Windows 8 :
1) Télécharger .DLL et l'ajouter à votre projet .
2) Utiliser ce code pour obtenir Fonctionnement du Système d'Information :
OriginalL'auteur Abdallah Shakhatreh