首先通過微軟官方文檔:https://learn.microsoft.com/zh-cn/windows/win32/sysinfo/operating-system-version了解各個(gè)操作系統(tǒng)對(duì)應(yīng)的版本號(hào)
?下面介紹3種獲取版本號(hào)的方式及弊端
1.?Environment.OSVersion.Version
OperatingSystem os = Environment.OSVersion;
// 判斷操作系統(tǒng)版本
if (os.Version.Major == 10 && os.Version.Build < 22000)
{
textBlock.Text = "當(dāng)前操作系統(tǒng)是 Windows 10";
}
else if (os.Version.Major == 10 && os.Version.Build >= 22000)
{
textBlock.Text = "當(dāng)前操作系統(tǒng)是 Windows 11";
}
else
{
textBlock.Text = $"當(dāng)前操作系統(tǒng)既不是 Windows 10也不是 Windows 11";
}
該方式適合.NET Framework,并且必須添加應(yīng)用程序清單文件,并且需要把程序應(yīng)用程序清單文件里面的supportedOS項(xiàng)取消注釋(默認(rèn)是注釋的)
?2.?System.Runtime.InteropServices.RuntimeInformation.OSDescription
var osDescription = System.Runtime.InteropServices.RuntimeInformation.OSDescription;
var osDescs = osDescription.Split(' ');
foreach (var osDesc in osDescs)
{
if (!osDesc.Contains(".")) continue;
var versions = osDesc.Split('.');
if (versions.Length < 2) continue;
if (int.Parse(versions[0]) == 10 && int.Parse(versions[2]) < 22000)
{
textBlock.Text = "當(dāng)前操作系統(tǒng)是 Windows 10";
}
else if (int.Parse(versions[0]) == 10 && int.Parse(versions[2]) >= 22000)
{
textBlock.Text = "當(dāng)前操作系統(tǒng)是 Windows 11";
}
else
{
textBlock.Text = $"當(dāng)前操作系統(tǒng)既不是 Windows 10也不是 Windows 11";
}
}
該方式適合.NET Core以上(.net framework 4.7以上)
3. 從注冊(cè)表中獲取版本信息
using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion"))
{
string productName = key.GetValue("ProductName") as string;
int majorVersion = (int)key.GetValue("CurrentMajorVersionNumber");
var buildNumber = int.Parse(key.GetValue("CurrentBuildNumber").ToString());
if (!string.IsNullOrEmpty(productName) && productName.ToLower().Contains("windows"))
{
if (majorVersion > 10 || majorVersion == 10 && buildNumber >= 22000)
{
textBlock.Text = "當(dāng)前操作系統(tǒng)是 Windows 11";
}
else if (majorVersion == 10 && buildNumber < 22000)
{
textBlock.Text = "當(dāng)前操作系統(tǒng)是 Windows 10";
}
else
{
textBlock.Text = $"當(dāng)前操作系統(tǒng)既不是 Windows 10也不是 Windows 11";
}
}
}
該方式暫時(shí)沒發(fā)現(xiàn)問題,但是需要使用版本號(hào)推斷是Win11
4.?從WMI獲取系統(tǒng)版本(推薦)文章來源:http://www.zghlxwxcb.cn/news/detail-692993.html
foreach (var o in new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get())
{
var obj = (ManagementObject)o;
// Microsoft Windows 11 企業(yè)版
var caption = obj.GetPropertyValue("Caption");
// 10.0.22000
var version = obj.GetPropertyValue("Version");
break;
}
該方式可以準(zhǔn)確獲取Windows版本描述和版本號(hào)文章來源地址http://www.zghlxwxcb.cn/news/detail-692993.html
到了這里,關(guān)于C# 獲取Windows系統(tǒng)版本注意事項(xiàng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!