前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >桌面应用如何判断win11操作系统

桌面应用如何判断win11操作系统

作者头像
桑榆肖物
发布2022-11-18 10:10:45
1.6K0
发布2022-11-18 10:10:45
举报
文章被收录于专栏:桑榆肖物

背景

Windows 11 操作系统已经正式发布快有一年了,在 .Net 开发中,我们获取操作系统版本,经常使用 Environment.OSVersion.Version.Major 和 Minor(6.1 = Windows 7, 10.0 = Windows 10),但是当 Win11 出现以后,一切变的有些不一样了。因为 Win11 获取到的操作系统版本[1] Major Minor 与 Win10 一样。

操作系统版本

在某些情况下因为不同的系统存在一些表现上的差别,我们需要区分操作系统的版本在编码时进行不同的处理,所以正确的获取操作系统版本非常重要,特别是 Win10 和 Win11 的变化还挺大的。

方案

其实剑走偏锋,我们可以通过检测某些软件(win11做了某些系统软件的删减和增加)以及某些系统软件的版本号来实现,但毕竟是偏门左道。

不过,经过多方查找和测试,我在 Stackoverflow[2] 找到一个相对来说靠谱的做法,Windows 10 从内部版本 10240 开始,以内部版本 19044 结束。 Windows 11 从内部版本 22000 开始,那么:

代码语言:javascript
复制
Environment.OSVersion.Version.Build >= 22000;

通上面的代码,在我们确定 Windows 操作系统之后就可以通过上面的代码轻松判断操作系统是否是 Win11 了。

后记

最后讲一下寻找解决方案过程中忍不住吐槽的地方,你敢信我在测试一个通过注册表读取操作系统版本的方案最后 Win11 获得结果产品名竟然是 Windows 10 Pro

而且这个操作系统是我前几天才使用 Win11 的官方镜像新装的,还是从 Win11 的开发者预览版新装的稳定版。

代码语言:javascript
复制
string HKLMWinNTCurrent = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion";
string osName = Registry.GetValue(HKLMWinNTCurrent, "productName", "").ToString();

Win11

References

[1] 操作系统版本: https://learn.microsoft.com/zh-cn/windows/win32/sysinfo/operating-system-version [2] Stackoverflow: https://stackoverflow.com/questions/69038560/detect-windows-11-with-net-framework-or-windows-api

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 桑榆肖物 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 方案
  • 后记
    • References
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档