MS Windows OS のバージョン番号を製品名に変換する方法は?
たとえば、.NET では、次の 2 つのプロパティを使用して、製品が MS Windows Vista Ultimate Edition であることを確認できます。
Environment.OSVersion.Platform returns Win32NT
Environment.OSVersion.Version returns 6.0.6001.65536
MS Windows OS のバージョン番号を製品名に変換する方法は?
たとえば、.NET では、次の 2 つのプロパティを使用して、製品が MS Windows Vista Ultimate Edition であることを確認できます。
Environment.OSVersion.Platform returns Win32NT
Environment.OSVersion.Version returns 6.0.6001.65536
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";
msdnhttp : //msdn.microsoft.com/en-us/library/ms724429(VS.85).aspxにC++の例があり、[VB]で使用するためにラップする方法について誰かが追加したメモもあります。ネット。必要な「欠落している」ビットは、Win32関数GetProductInfo(このためのPInvoke.netリファレンス)のようです。
これとAvramからの回答の間に、完全なバージョンの文字列を組み立てることができるはずです。
これが私の解決策であり、最速で、選択されたケースはありません。
結果は必要に応じてカスタマイズできます
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];
}
}
GUIフレンドリーな情報メッセージが必要な場合は、私が使用しました
My.Computer.Info.OSFullName & " (" + My.Computer.Info.OSVersion + ")"
Windowsの将来のバージョンの将来の証明のようです