31

MS Windows OS のバージョン番号を製品名に変換する方法は?

たとえば、.NET では、次の 2 つのプロパティを使用して、製品が MS Windows Vista Ultimate Edition であることを確認できます。

Environment.OSVersion.Platform returns Win32NT

Environment.OSVersion.Version returns 6.0.6001.65536

4

5 に答える 5

13

WMI を使用して、わかりやすい製品名 (「Microsoft® Windows Server® 2008 Enterprise」) を取得できます。

using System.Management;
var name = (from x in new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get().OfType<ManagementObject>()
                      select x.GetPropertyValue("Caption")).First();
return name != null ? name.ToString() : "Unknown";
于 2010-01-06T21:50:52.180 に答える
4

msdnhttp : //msdn.microsoft.com/en-us/library/ms724429(VS.85).aspxにC++の例があり、[VB]で使用するためにラップする方法について誰かが追加したメモもあります。ネット。必要な「欠落している」ビットは、Win32関数GetProductInfoこのためのPInvoke.netリファレンス)のようです。

これとAvramからの回答の間に、完全なバージョンの文字列を組み立てることができるはずです。

于 2009-02-13T12:14:33.213 に答える
3

これが私の解決策であり、最速で、選択されたケースはありません。

結果は必要に応じてカスタマイズできます

 public static string SistemaOperativo
    {
        get
        {
            #region Dichiarazioni
            var osInfo = Environment.OSVersion;
            int platformID = (int)osInfo.Platform;
            int versionM = osInfo.Version.Major;
            int versionm = osInfo.Version.Minor;
            string servicePack = osInfo.ServicePack;
            #endregion

            #region Spiegazione logica
            /*
             * IT: 
             * La chiave del dizionario è il risultato del concatenamento di 
             * PlatformID,MajorVersion,MinorVersion, tutto convertito in Int32, 
             * per esempio Platform ID=1 MajorVersion=4 MinorVersion=0, 
             * il risultato è 140 ossia Windows 95
             * 
             * EN:
             * The key in Dictionary is the 'join' 
             * of PlatformID,MajorVersion,MinorVersion, in int32,
             * eg. Platform ID=1 MajorVersion=4 MinorVersion=0, 
             * the result is '140' (Windows 95)
            */
            #endregion
            Dictionary<int, string> sistemiOperativi = new Dictionary<int, string>(){
                        {0, "Windows 3.1"},
                        {140, "Windows 95"},
                        {1410, "Windows 98"},
                        {1490, "Windows ME"},
                        {2351, "Windows NT 3.51"},
                        {240, "Windows 4.0"},
                        {250, "Windows 2000"},
                        {251, "Windows XP"},
                        {252, "Windows 2003"},
                        {260, "Windows Vista/Server 2008"},
                        {261, "Windows 7"},
                        {-1, "Unknown"}
                   };
            int idUnivoco = int.Parse(string.Format("{0}{1}{2}", platformID, versionM, versionm));
            string outValue = "";
            if (sistemiOperativi.TryGetValue(idUnivoco, out outValue))
                return string.Format("{0}{1}", outValue, servicePack);
            return sistemiOperativi[-1];
        }
    }
于 2012-05-08T10:56:39.913 に答える
1

GUIフレンドリーな情報メッセージが必要な場合は、私が使用しました

My.Computer.Info.OSFullName & " (" + My.Computer.Info.OSVersion + ")"

Windowsの将来のバージョンの将来の証明のようです

于 2011-03-04T17:54:58.590 に答える