我该如何在UWP 和WinUI中通过C# 来获取我当前系统的版本?

Roy Li - MSFT 31,886 信誉分 Microsoft 供应商
2024-02-28T07:24:26.7966667+00:00

您好。我想在 UWP 和 WinUI 中通过 C# 来确认用户操作系统。在我的情景中,我想要找到一个方法,他的返回值可以告诉我操作系统是 Windows 10 还是 11。我试过如下的方法:

var os = Environment.OSVersion; OperatingSystem opSys = new OperatingSystem(os.Platform, os.Version);

但这个方法的返回值,在 Windows 10 和 11 的版本都是 Win32NT。

此问题由UWP and WinUI - How to check my OS version through C# - Microsoft Q&A 总结而来

通用 Windows 平台 (UWP)
通用 Windows 平台 (UWP)
一个 Microsoft 平台,用于生成和发布适用于 Windows 桌面设备的应用。
17 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Junjie Zhu - MSFT 15,056 信誉分 Microsoft 供应商
    2024-02-28T08:43:36.2+00:00

    你好

    欢迎来到微软问答!

    推荐使用Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamilyVersion,您可以从中获取操作系统构建信息。

    Win11的操作系统版本从22000开始。如果版本小于22000,则可以确定当前操作系统是Win10。

    string deviceFamilyVersion = Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamilyVersion;
    ulong version = ulong.Parse(deviceFamilyVersion);
    ulong major = (version & 0xFFFF000000000000L) >> 48;
    ulong minor = (version & 0x0000FFFF00000000L) >> 32;
    ulong build = (version & 0x00000000FFFF0000L) >> 16;
    ulong revision = (version & 0x000000000000FFFFL);
    var osVersion = $"{major}.{minor}.{build}.{revision}";
                
    if (build >= 22000)
    {
        Debug.WriteLine("win11");
    }
    else
    {
        Debug.WriteLine("win10");
    }
    

    谢谢。


    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。 注意:如果您想收到该主题的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助