• 【转】【C#】判断当前操作系统


    写一个判断操作系统的工具类OSHelper.cs

    public class OSHelper
    {
        // 获取操作系统ID
        public static System.PlatformID GetPlatformID()
        {
            //获取系统信息
            System.OperatingSystem osInfo = System.Environment.OSVersion;
    
            //获取操作系统ID
            System.PlatformID platformID = osInfo.Platform;
    
            return platformID;
        }
    
        // 获取主版本号
        public static int GetVersionMajor()
        {
            //获取系统信息
            System.OperatingSystem osInfo = System.Environment.OSVersion;
    
            //获取主版本号
            int versionMajor = osInfo.Version.Major;
    
            return versionMajor;
        }
    
        // 获取副版本号
        public static int GetVersionMinor()
        {
            //获取系统信息
            System.OperatingSystem osInfo = System.Environment.OSVersion;
    
            //获取副版本号
            int versionMinor = osInfo.Version.Minor;
    
            return versionMinor;
        }
    
        //C#判断操作系统是否为Windows98
        public static bool IsWindows98
        {
            get
            {
                return (Environment.OSVersion.Platform == PlatformID.Win32Windows) && (Environment.OSVersion.Version.Minor == 10) && (Environment.OSVersion.Version.Revision.ToString() != "2222A");
            }
        }
        //C#判断操作系统是否为Windows98第二版
        public static bool IsWindows98Second
        {
            get
            {
                return (Environment.OSVersion.Platform == PlatformID.Win32Windows) && (Environment.OSVersion.Version.Minor == 10) && (Environment.OSVersion.Version.Revision.ToString() == "2222A");
            }
        }
        //C#判断操作系统是否为Windows2000
        public static bool IsWindows2000
        {
            get
            {
                return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 5) && (Environment.OSVersion.Version.Minor == 0);
            }
        }
        //C#判断操作系统是否为WindowsXP
        public static bool IsWindowsXP
        {
            get
            {
                return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 5) && (Environment.OSVersion.Version.Minor == 1);
            }
        }
        //C#判断操作系统是否为Windows2003
        public static bool IsWindows2003
        {
            get
            {
                return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 5) && (Environment.OSVersion.Version.Minor == 2);
            }
        }
        //C#判断操作系统是否为WindowsVista
        public static bool IsWindowsVista
        {
            get
            {
                return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 6) && (Environment.OSVersion.Version.Minor == 0);
            }
        }
        //C#判断操作系统是否为Windows7
        public static bool IsWindows7
        {
            get
            {
                return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 6) && (Environment.OSVersion.Version.Minor == 1);
            }
        }
        //C#判断操作系统是否为Unix
        public static bool IsUnix
        {
            get
            {
                return Environment.OSVersion.Platform == PlatformID.Unix;
            }
        }
        //利用C#判断当前操作系统是否为Win8系统
        public static bool IsWindows8()
        {
            Version currentVersion = Environment.OSVersion.Version;
            Version compareToVersion = new Version("6.2");
            if (currentVersion.CompareTo(compareToVersion) >= 0)
                return true;
            else
                return false;
        }
    
    }

    问题来源:
    做WPF的时候,发现部分UI在不同操作系统下的表现不一致,例如ListBox中的元素Item在Win10中水平间距自动平均分的,即指定了Item的宽高,但不指定Margin,会自动计算出Margin以平均间距,但是在Win8中不会如此,即所有Item靠左对齐,导致右边有一段空白。所以需要根据不同OS做UI的适配。

    根据这一问题,解决办法是在XAML中ListBox使用< ListBox.ItemTemplate >< DataTemplate >,然后将Margin=”{Binding Margin}”使用MVVM绑定界面属性到ViewModel中,然后给ItemsSource绑定的列表中的实体类新增这个Margin属性(类型最好是Thickness,如果只有一个值也可以是int)。


    重要的参考:

    http://blog.csdn.net/yl2isoft/article/details/17336329
    https://msdn.microsoft.com/zh-cn/library/windows/desktop/ms724834(v=vs.85).aspx

  • 相关阅读:
    InfoPath Resource Sites
    深入浅出SharePoint——批量导入数据
    理解Javascript_07_理解instanceof实现原理
    二分图匹配(匈牙利算法模板)
    不錯的幾個ICON搜尋網站推廌
    Sql Server 执行计划及Sql查询优化
    SCSI RAID与IDE RAID性能对比说明
    Lucene.Net的中文分词组件AdvancedChineseAnalyzer
    NAS和SAN存储和恢复技术介绍
    百万数据查询优化技巧三十则
  • 原文地址:https://www.cnblogs.com/guxin/p/csharp-detect-operating-system.html
Copyright © 2020-2023  润新知