【问题标题】:Getting Service pack major version获取 Service Pack 主要版本
【发布时间】:2013-07-19 18:04:32
【问题描述】:

在 Environment.OSVersion.ServicePack 中,我只看到 ServicePack 变量,但没有主要或次要版本,我如何获得主要或次要版本?

【问题讨论】:

    标签: c# operating-system version


    【解决方案1】:

    您可以使用以下代码。

        void Main()
        {
            GetServicePackVersion().Major.Dump();
        }
    
        [StructLayout(LayoutKind.Sequential)]
        private struct OSVERSIONINFOEX
        {
            public int dwOSVersionInfoSize;
            public int dwMajorVersion;
            public int dwMinorVersion;
            public int dwBuildNumber;
            public int dwPlatformId;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
            public string szCSDVersion;
            public short wServicePackMajor;
            public short wServicePackMinor;
            public short wSuiteMask;
            public byte wProductType;
            public byte wReserved;
        }
    
        [DllImport("kernel32.dll")]
        private static extern bool GetVersionEx([In, Out] ref OSVERSIONINFOEX osVersionInfo);
    
        public static Version GetServicePackVersion()
        {
            OSVERSIONINFOEX osVersionInfo = new OSVERSIONINFOEX();
            osVersionInfo.dwOSVersionInfoSize = Marshal.SizeOf(typeof(OSVERSIONINFOEX));
    
            if (GetVersionEx(ref osVersionInfo))
            {
                Version result = new Version(osVersionInfo.wServicePackMajor, osVersionInfo.wServicePackMinor);
                return result;
            }
            else
            {
                return null;
            }
        }
    

    【讨论】:

      【解决方案2】:

      Service Pack 没有主要或次要版本。您必须探索Environment.OSVersion.Version 以获取必要的版本信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-28
        • 1970-01-01
        • 2018-12-10
        相关资源
        最近更新 更多