2010-09-30 7 views
0

Je développe une application Windows (cela dépend de DirectShow, donc pas de Linux, etc).Comment vérifier si le système d'exploitation actuel est Windows 7?

Il fonctionnera, pour l'instant, sous XP et Windows 7 (pas de support Vista).

Cependant, il y a un morceau de code qui se comporte très différemment dans XP ou Windows 7, donc j'ai besoin de savoir dans quel système je suis, pour faire une solution de contournement. Comme je ne supporte pas Vista - et même si je le faisais, je suppose qu'il n'y aurait pas beaucoup de différences - je me fiche de savoir si Vista et 7 sont identifiés comme le même système d'exploitation, bien que je préférerais qu'ils ne l'étaient pas. Juste au cas où, je développe en C++, et je ne veux pas maintenir deux exécutables différents, et je préférerais une façon agnostique de le faire.

Alors, ma question: Quelle est la bonne façon (tm) de vérifier à l'exécution quelle version de Windows est en cours d'exécution?

+0

Vous soutenez XP et 7 en ignorant Vista? J'adorerais entendre le raisonnement derrière ça ... –

+0

@Greg: Parce que Vista était l'une des choses que nous aimerions beaucoup oublier, tout comme Windows ME, Windows 1.0 et MSDOS 4 :-) – paxdiablo

+0

@paxdiablo - I ' Je n'ai jamais vraiment compris les problèmes des gens avec Vista. Je l'utilise sur mon ordinateur portable tout de suite parce que cela ne semble pas valoir la peine de réinstaller avec 7. Ok la version prête à l'emploi avait quelques failles d'utilisabilité, mais en cours d'exécution SP2 c'est parfaitement bien. –

Répondre

2

Le article référencé par Naveen a une remarque importante, qui pourrait être pertinent pour votre scénario aussi:

Identification du système d'exploitation actuel est généralement pas la meilleure façon de déterminer si une caractéristique du système d'exploitation particulier est présent. En effet, le système d'exploitation a peut-être ajouté de nouvelles fonctionnalités dans une DLL redistribuable. Plutôt que d'utiliser GetVersionEx pour déterminer la plate-forme du système d'exploitation ou le numéro de version, vérifiez la présence de l'entité elle-même.

La vérification d'une fonction particulière peut être effectuée à l'aide de la fonction IsOS.

GetVersionEx peut être utilisé pour récupérer la version du système d'exploitation. Cependant, sachez que le système d'exploitation s'identifiera différemment selon que le mode de compatibilité est activé ou non.

+0

Merci. Je ne supporte aucune nouvelle fonctionnalité, c'est juste que certains filtres DirectShow semblent se comporter différemment dans XP et 7 lors de l'application de certains hacks de bas niveau (alors que d'autres se comportent différemment même dans des conditions normales). Pour l'instant, connaître la version du système d'exploitation semble suffisant. – raven

2

Voir cet article sur MSDN pour obtenir la version du système d'exploitation par programmation.

+0

Merci beaucoup. Pourriez-vous éditer votre réponse pour inclure les noms des fonctions, donc au cas où le lien échouerait, n'importe qui qui trouve cette page peut les rechercher? – raven

Questions connexes