web-dev-qa-db-fra.com

Comment obtenir la version Windows - comme dans "Windows 10, version 1607"?

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!

8
Joe Gayetty

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);
18
Stavm
string Version = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion", "ProductName", null);

Donne un nom comme "Windows 10 Enterprise".

1
Skyfish

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);
0
A. Natapov
 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

0
nap