Il semble que le mot "version" en référence à Windows soit utilisé pour différentes choses. Par exemple, la «mise à jour d'anniversaire» de Windows 10 est intitulée «Version 1607» par Microsoft ( ici par exemple). Mais si j'essaie d'obtenir la "version" (sur un PC sur lequel la mise à jour d'anniversaire est installée) à l'aide du code suivant, rien n'est renvoyé qui ressemble à "1607".
// Get Version details
Version ver = os.Version;
Console.WriteLine("Major version: " + ver.Major);
Console.WriteLine("Major Revision: " + ver.MajorRevision);
Console.WriteLine("Minor version: " + ver.Minor);
Console.WriteLine("Minor Revision: " + ver.MinorRevision);
Console.WriteLine("Build: " + ver.Build);
J'ai compris:
Major version: 6
Major Revision: 0
Minor version: 2
Minor Revision: 0
Build: 9200
Comment obtenir la "version" Windows 10 comme dans la "version 1607"?
Merci!
selon lien officiel MSDN , il existe un numéro de version spécifique pour chaque version de Windows. Dans Net Net, cela peut être lu à l'aide de l'objet Environment.OSVersion.
Console.WriteLine("OSVersion: {0}", Environment.OSVersion);
//output: OSVersion: Microsoft Windows NT 6.2.9200.0
Ce que vous recherchez s'appelle ReleaseID et non une version de Windows. Ceci peut être lu à partir de la clé de registre:
HKEY_LOCAL_MACHINE\LOGICIEL\Microsoft\Windows NT\CurrentVersion\ReleaseId
using Microsoft.Win32;
string releaseId = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ReleaseId", "").ToString();
Console.WriteLine(releaseId);
string Version = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "ProductName", null);
Donne un nom comme "Windows 10 Enterprise".
En plus de la réponse de Scott, vous pouvez également obtenir le nom du produit (ex. Windows 10 Pro) avec ceci (* je ne prends pas de crédit car Scott est celui qui a mentionné le chemin du registre + je réutilise son code ci-dessous):
using Microsoft.Win32;
string ProductName =
Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName", "").ToString();
Console.WriteLine(ProductName);
private static ManagementObject GetMngObj(string className)
{
var wmi = new ManagementClass(className);
foreach (var o in wmi.GetInstances())
{
var mo = (ManagementObject)o;
if (mo != null) return mo;
}
return null;
}
public static string GetOsVer()
{
try
{
ManagementObject mo = GetMngObj("Win32_OperatingSystem");
if (null == mo)
return string.Empty;
return mo["Version"] as string;
}
catch (Exception e)
{
return string.Empty;
}
}
Comment utiliser:
Console.WriteLine(GetOsVer());
Résultat: 10.0.0.1299