9

PC に搭載されている Windows のバージョンを知りたい.. in C# Framework 3.5

使ってみました

オペレーティング システム os = Environment.OSVersion;

バージョン ver = os.Version;

しかし、結果は

プラットフォーム: WIN32NT

バージョン 6.2.9200

バージョン マイナー: 2

バージョン メジャー: 6

問題は、「Windows 8 Pro」を持っていることです...

どうすれば検出できますか?

ありがとう

4

4 に答える 4

13

バージョン番号と適切な文字列値を自分で一致させる必要があります。

以下は、最新の Windows OS とそれに対応するバージョン番号のリストです。

  • Windows Server 2016 & 2019 - 10.0 *
  • Windows 10 - 10.0 *
  • Windows 8.1 - 6.3 *
  • Windows Server 2012 R2 - 6.3 *
  • Windows 8 - 6.2
  • Windows Server 2012 - 6.2
  • Windows 7 - 6.1
  • Windows Server 2008 R2 - 6.1
  • Windows Server 2008 - 6.0
  • Windows Vista - 6.0
  • Windows Server 2003 R2 - 5.2
  • Windows Server 2003 - 5.2
  • Windows XP 64 ビット版 - 5.2
  • Windows XP - 5.1
  • Windows 2000 - 5.0

*Windows 8.1 または 10 用に明示されているアプリケーションの場合。8.1 / 10 用に明示されていないアプリケーションは、Windows 8 OS バージョンの値 (6.2) を返します。

これがソースです。

また、同じソースから:

現在のオペレーティング システムを特定することは、通常、特定のオペレーティング システム機能が存在するかどうかを判断する最善の方法ではありません。これは、オペレーティング システムに再配布可能な DLL に新しい機能が追加されている可能性があるためです。バージョン API ヘルパー関数を使用してオペレーティング システムのプラットフォームまたはバージョン番号を特定するのではなく、機能自体の存在をテストします。

于 2014-02-12T19:45:46.550 に答える
3

Windows のバージョンを簡単に比較できるように、 OsInfo nugetをリリースしました。

bool win8OrLess = Environment.OSVersion.IsLessThanOrEqualTo(OsVersion.Win8);
bool winXp = Environment.OSVersion.IsEqualTo(OsVersion.WinXP);
int? servicePack = Environment.OSVersion.GetServicePackVersion();
bool is64bit = Environment.OSVersion.Is64Bit(); // Already covered in .NET 4.5+
于 2015-01-22T17:54:26.863 に答える
2

これを試して:

using System.Management;

private string fnGetFriendlyName()
{
    var name = (from x in new ManagementObjectSearcher("SELECT Caption FROM Win32_OperatingSystem").Get().OfType<ManagementObject>()
                select x.GetPropertyValue("Caption")).FirstOrDefault();
    return name != null ? name.ToString() : "Unknown";
}

ソース: https://stackoverflow.com/a/2016557/3273962

于 2016-03-23T05:26:11.350 に答える