2010-03-03 4 views
1

Comment puis-je savoir par programme si mon système d'exploitation est le serveur Longhorn ou Vista (client).Quelle est la manière la plus simple de différencier les versions de Windows?

Il semble que la version majeure et version mineure sont les mêmes pour les deux:
http://msdn.microsoft.com/en-us/library/ms724833.aspx

Alors, est-t-il une meilleure alternative?

+0

Il est dans l'article que vous avez publié? wProductType différencie les clients et les serveurs. –

Répondre

4

N'a pas cette même page vous liez vous donner la réponse?

Windows Server 2008 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION 
Windows Vista  OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION 

vérifier Juste le membre wProductType contre VER_NT_WORKSTATION

modifier

Ne ressemble pas il y a un moyen d'obtenir cela sans P/Invoke. System.Environment.OSVersion n'expose pas ce niveau de détail, et bien qu'il y ait un internal static class Win32Native dans l'espace de noms Microsoft.Win32 dans mscorlib, autant que je peux dire du démontage, il n'y a rien qui utilise, encore moins expose, wProductType.

J'ai trouvé (mais non essayé) this page on pinvoke.net.

+0

semble avoir besoin d'un pin-up. Y at-il une solution pour éviter ce pin-up? – satya

+0

Merci AakashM. Même je ne pouvais pas trouver un sans P/Invoke. de toute façon, merci pour votre aide – satya

+0

Il peut être fait sans pinvoke - via WMI. Voir ma réponse ci-dessous. –

1

Pour le serveur,

OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION 

Workstation

OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION 
1

Vous pouvez utiliser WMI pour trouver la version de Windows et toutes sortes d'autres informations système.

Voici comment obtenir une chaîne de version:

var osDetails = new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get().OfType<System.Management.ManagementObject>().First(); 
string version = osDetails.GetPropertyValue("Caption") as string; 

cela retourne une chaîne qui lit quelque chose comme: "Microsoft Windows XP Professionnel".

il y a plus de propriétés il en dehors de la légende qui peut être utilisé pour récupérer les numéros de version, les éditions, l'architecture, etc .:

http://msdn.microsoft.com/en-us/library/aa394239(v=VS.85).aspx

Questions connexes