PC に搭載されている Windows のバージョンを知りたい.. in C# Framework 3.5
使ってみました
オペレーティング システム os = Environment.OSVersion;
バージョン ver = os.Version;
しかし、結果は
プラットフォーム: WIN32NT
バージョン 6.2.9200
バージョン マイナー: 2
バージョン メジャー: 6
問題は、「Windows 8 Pro」を持っていることです...
どうすれば検出できますか?
ありがとう
PC に搭載されている Windows のバージョンを知りたい.. in C# Framework 3.5
使ってみました
オペレーティング システム os = Environment.OSVersion;
バージョン ver = os.Version;
しかし、結果は
プラットフォーム: WIN32NT
バージョン 6.2.9200
バージョン マイナー: 2
バージョン メジャー: 6
問題は、「Windows 8 Pro」を持っていることです...
どうすれば検出できますか?
ありがとう
バージョン番号と適切な文字列値を自分で一致させる必要があります。
以下は、最新の Windows OS とそれに対応するバージョン番号のリストです。
*Windows 8.1 または 10 用に明示されているアプリケーションの場合。8.1 / 10 用に明示されていないアプリケーションは、Windows 8 OS バージョンの値 (6.2) を返します。
これがソースです。
また、同じソースから:
現在のオペレーティング システムを特定することは、通常、特定のオペレーティング システム機能が存在するかどうかを判断する最善の方法ではありません。これは、オペレーティング システムに再配布可能な DLL に新しい機能が追加されている可能性があるためです。バージョン API ヘルパー関数を使用してオペレーティング システムのプラットフォームまたはバージョン番号を特定するのではなく、機能自体の存在をテストします。
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+
これを試して:
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";
}