zoukankan      html  css  js  c++  java
  • 【转】【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

  • 相关阅读:
    静态工具类中使用注解注入service
    赵伟国:芯片不像互联网 不能一招鲜吃遍天(发展芯片制造业已拥有三个纵深:市场纵深、资本纵深、人才纵深)
    将grub写入mbr
    Linux下Qt5.6 Fcitx无法输入中文输入解决办法
    为 Mac Finder 增加右键文件打包压缩(免费)
    Obtaining Directory Change Notifications(微软的例子,使用FindFirstChangeNotification,FindNextChangeNotification,FindCloseChangeNotification API函数)
    C#开发Linux守护进程
    排序算法比较与分析
    Mvc+Dapper+存储过程分页10万条数据
    RabbitMQ
  • 原文地址:https://www.cnblogs.com/guxin/p/csharp-detect-operating-system.html
Copyright © 2011-2022 走看看