首页 > 编程语言 >C# 判别系统版本以及Win10的识别办法

C# 判别系统版本以及Win10的识别办法

时间:2023-05-18 17:47:40浏览次数:50  
标签:10 判别 C# Server Environment Windows Version Win10 OSVersion

我们都知道在C#中可以通过Environment.OSVersion来判断当前操作系统,下面是操作系统和主次版本的对应关系:

操作系统 主版本.次版本
Windows 10 10.0*
Windows Server 2016 Technical Preview 10.0*
Windows 8.1 6.3*
Windows Server 2012 R2 6.3*
Windows 8 6.2
Windows Server 2012 6.2
Windows 7 6.1
Windows Server 2008 R2 6.1
Windows Server 2008 6
Windows Vista 6
Windows Server 2003 R2 5.2
Windows Server 2003 5.2
Windows XP 64-Bit Edition 5.2
Windows XP 5.1
Windows 2000 5

 

我们可以用Environment.OSVersion来判断当前操作系统

public static bool IsWin7 => Environment.OSVersion.Version.Major == 6
                       && Environment.OSVersion.Version.Minor == 1;
public static bool IsWin10 => Environment.OSVersion.Version.Major == 10;

  

但是,当你在win10操作系统上使用这个函数是会得到这样的结果:6.2.9200.0,而不是我们期待的10.0.***

问题是Win10下获取的值可能不是10,说明地址: https://docs.microsoft.com/zh-cn/windows/win32/sysinfo/operating-system-version

 

For applications that have been manifested for Windows 8.1 or Windows 10. Applications not manifested for Windows 8.1 or Windows 10 will return the Windows 8 OS version value (6.2). To manifest your applications for Windows 8.1 or Windows 10, refer to Targeting your application for Windows.

现在需要一个程序清单文件



然后把下面的注释去掉,就可以返回10.0.***了





还有另外一种方法如下。

利用C#判断当前操作系统是否为Win8系统(此方法不需要添加程序清单文件)

代码:

using System;
  
namespace GetOSVersionExp
{
  class Program
  {
    static void Main(string[] args)
    {
      Version currentVersion = Environment.OSVersion.Version;
      Version compareToVersion = new Version("6.2");
      if (currentVersion.CompareTo(compareToVersion) >= 0)
      {//win8及其以上版本的系统
        Console.WriteLine("当前系统是WIN8及以上版本系统。");
      }
      else
      {
        Console.WriteLine("当前系统不是WIN8及以上版本系统。");
      }
    }
  }
}

 

标签:10,判别,C#,Server,Environment,Windows,Version,Win10,OSVersion
From: https://www.cnblogs.com/ankeyliu/p/17412609.html

相关文章

  • nodeJs 常用库之 cross-env
    楔子为什么会注意到这个库呢?起因是因为,在公司的项目package.json看到启动或者编译的命令是这样写的"start":"cross-envNODE_ENV=developmentSERVICE_NAME=testServerneststart","start:dev":"cross-envNODE_ENV=developmentSERVICE_NAME=testServerneststart--......
  • Html中使用jquery通过Ajax请求WebService接口以及跨域问题解决
    场景VS2019新建WebService/Web服务/asmx并通过IIS实现发布和调用:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/130743584在上面实现发布WebService的基础上,怎样在html中通过jquery对接口发起请求和解析数据。注:博客:https://blog.csdn.net/badao_liumang_qiz......
  • docker-compose 部署 es8.7
    https://blog.51cto.com/wangguishe/6177453系统设置sysctl.conf#echovm.max_map_count=262144>>/etc/sysctl.conf   ulimits#dockerrun--rmdocker.elastic.co/elasticsearch/elasticsearch:8.7.0/bin/bash-c'ulimit-Hn&&a......
  • B. Fake Plastic Trees(贪心+dp)
    题目(FakePlasticTrees)[https://codeforces.com/problemset/problem/1693/B]题意输入T(≤1e3)表示T组数据。所有数据的n之和≤2e5。每组数据输入n(2≤n≤2e5)表示一棵n个节点的树,编号从1开始,1为根节点。然后输入p[2],p[3],...,p[n],其中p[i]表示i的父节......
  • CF840E In a Trap
    CF840EInaTrap这题似乎挺经典的。给类似的位运算维护提供了一个思路。初看题,这个形式很明显是把树上路径拆分成了若干段,这个询问很奇怪。智商不够阈值分治来凑。每个点向上预处理\(256\)的长度的信息,这样就只需考虑高位带来的影响了。那么需要预处理的就是\(f_{u,k}\)表......
  • EF Core 主从表修改主键类型步骤
    1.背景有两张表Blog与PostclassDiagramclassBlog{+GuidId+StringName+DateTimeCreateTime+intOrder+List<Post>Posts}classPost{+StringId+StringContent+GuidBlogId+BlogBlog}......
  • case
    [root@es3data]#catcase11.sh#!/bin/bash./etc/rc.d/init.d/functionsdisable_selinux(){sed-i's/SELNUX=enforcing/SELINUX=disabled/'/etc/selinux/configaction"SELINUX已经禁用,重启生效"}disable_firewalld(){systemctldisable--now......
  • centos7部署playwright
    首先可以确定,playwright在centos上部署官方是不支持的,github上可以看到https://github.com/microsoft/playwright/issues/9194   走过很多坑,总结了下面一套部署方案: 一、首先安装比较低的版本#安装playwrightpipinstallplaywright==1.16.1-ihttp://pypi.douba......
  • 资源文件:获取 EXE、DLL 或 ICO 文件中的图标
    //声明:ExtractIcon( hInst:HINST;     {调用函数的程序实例} lpszExeFileName:PChar;{文件路径;文件可以是*.exe、*.dll、*.ico} nIconIndex:UINT    {图标索引}):HICON;{返回图标句柄;索引为0时返回第一个图标句柄;索引为#FFFFFFFF......
  • 抓包工具Charles:(三)https协议的抓取
    当我们在抓包是,经常遇到https协议,抓取的内容不是乱码就是unknown。例如: 解决的办法很简单:第一步:在charles中安装ssl协议      第二步:  ......