如何在.NET 5.0控制台应用程序上的C#中检查Windows版本

KSZLAGK

就像im在“控制台游戏引擎”上工作一样,但是它只能在Windows 10上使用,因为“自定义颜色”没有正确显示在其他版本上,例如win8,相反,它们只是一堆unicode代码?

example.png

所以我想检查Windows版本是否为10。

var workingSysVer = Environment.OSVersion.Version.ToString().Substring(0, 2);
            if (workingSysVer != "10")
            {
                Console.Title = "OS Version Warning";
                // other code
            }

有没有更好的方法来检查Windows版本?

奥利维尔·罗吉尔(Olivier Rogier)

您可以使用其中的所需内容(除了OSVersion可以使用osName和之外osRelease):

using System;
using System.Linq;
using System.Reflection;
using System.Runtime.Versioning;
using Microsoft.Win32;

string NL = Environment.NewLine;
string HKLMWinNTCurrent = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion";

string osName = get(() => Registry.GetValue(HKLMWinNTCurrent, "productName", "").ToString());

string osRelease = get(() => Registry.GetValue(HKLMWinNTCurrent, "ReleaseId", "").ToString());
if ( !osRelease.IsNullOrEmpty() ) osRelease = $" ({ osRelease})";

string osVersion = Environment.OSVersion.Version.ToString();

string osType = Environment.Is64BitOperatingSystem ? "64-bits" : "32-bits";

string clr = Environment.Version.ToString();

string dotnet = get(() =>
{
  var attributes = Assembly.GetExecutingAssembly().CustomAttributes;
  var result = attributes.FirstOrDefault(a => a.AttributeType == typeof(TargetFrameworkAttribute));
  return result == null
          ? ".NET Framework (unknown)"
          : result.NamedArguments[0].TypedValue.Value.ToString();
});

string Platform = $"{osName} {osType} {osVersion}{osRelease}{NL}{dotnet}{NL}CLR {clr}";

string get(Func<string> func)
{
  try { return func(); }
  catch { return "(undefined)"; }
}

Windows 10 Pro 64-bits 6.2.9200.0 (2009)
.NET Framework 4.7.2
CLR 4.0.30319.42000

我从没注意到6.2.9200是不正确的...!?

来自@nap的解决方案如何获取Windows版本-如“ Windows 10,版本1607”?

@DanielDiPaolo的解释在.net中检测Windows版本

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在.Net控制台应用程序中获取承载令牌?

来自分类Dev

如何使用C#在内存中执行.NET控制台应用程序?

来自分类Dev

如何在Azure Webjob /控制台应用程序上获取当前路径

来自分类Dev

为什么异步/等待在我的ASP.net 5控制台应用程序中不起作用?

来自分类Dev

如何在ASP.NET 5应用程序中添加项目参考

来自分类Dev

在“ asp.net 5控制台”应用程序中,“控制台”不包含“ ReadKey”的定义

来自分类Dev

如何将控制台应用程序(来自asp.net 5的程序包)发布为Azure Web作业

来自分类Dev

在ASP.NET 5 Beta 8控制台应用程序中,如何在没有startup.cs的情况下使用EF7并连接到SQL Server?

来自分类Dev

如何构建在.NET CoreCLR上运行的hello-world控制台应用程序?

来自分类Dev

如何在ASP.NET 5应用程序中从引用中删除Angular?

来自分类Dev

ASP.NET 5控制台应用程序(程序包)-如何从连接字符串创建DBContext?

来自分类Dev

如何在C#中的控制台应用程序中激活代码的不同部分

来自分类Dev

如何在asp.net控制台应用程序中使用依赖项注入?

来自分类Dev

如何在ASP.NET Core 1.0中显示Web应用程序的LoggerFactory日志控制台?

来自分类Dev

如何使Log4Net写入控制台应用程序中的EventLog?

来自分类Dev

如何在.NET 3控制台应用程序的印刷行中间获取输入

来自分类Dev

如何在.NET Framework的控制台应用程序中创建通知?

来自分类Dev

如何使.net Core 3.1控制台应用程序中的控制台记录器正常工作

来自分类Dev

在VB.NET控制台应用程序中,如何从My.Settings对象获取应用程序的设置?

来自分类Dev

如何从提供程序(C#.NET Core控制台应用程序)获取Args?

来自分类Dev

如何在.NET Core控制台应用程序中设置DI容器?

来自分类Dev

如何从.NET生成独立的控制台应用程序

来自分类Dev

如何在具有Windows应用程序输出类型的C#程序上显示控制台

来自分类Dev

如何使用C#在内存中执行.NET控制台应用程序?

来自分类Dev

.NET C#控制台应用程序如何从生产环境中获取更详细的异常信息

来自分类Dev

如何在.net中以Web形式转换控制台应用程序?

来自分类Dev

如何在Web应用程序ASP.net MVC中嵌入C#.net控制台应用程序

来自分类Dev

如何在.NET Core控制台应用程序中实现MVVM?

来自分类Dev

如何在 .Net Core 控制台应用程序中引用 .Net Core 库

Related 相关文章

  1. 1

    如何在.Net控制台应用程序中获取承载令牌?

  2. 2

    如何使用C#在内存中执行.NET控制台应用程序?

  3. 3

    如何在Azure Webjob /控制台应用程序上获取当前路径

  4. 4

    为什么异步/等待在我的ASP.net 5控制台应用程序中不起作用?

  5. 5

    如何在ASP.NET 5应用程序中添加项目参考

  6. 6

    在“ asp.net 5控制台”应用程序中,“控制台”不包含“ ReadKey”的定义

  7. 7

    如何将控制台应用程序(来自asp.net 5的程序包)发布为Azure Web作业

  8. 8

    在ASP.NET 5 Beta 8控制台应用程序中,如何在没有startup.cs的情况下使用EF7并连接到SQL Server?

  9. 9

    如何构建在.NET CoreCLR上运行的hello-world控制台应用程序?

  10. 10

    如何在ASP.NET 5应用程序中从引用中删除Angular?

  11. 11

    ASP.NET 5控制台应用程序(程序包)-如何从连接字符串创建DBContext?

  12. 12

    如何在C#中的控制台应用程序中激活代码的不同部分

  13. 13

    如何在asp.net控制台应用程序中使用依赖项注入?

  14. 14

    如何在ASP.NET Core 1.0中显示Web应用程序的LoggerFactory日志控制台?

  15. 15

    如何使Log4Net写入控制台应用程序中的EventLog?

  16. 16

    如何在.NET 3控制台应用程序的印刷行中间获取输入

  17. 17

    如何在.NET Framework的控制台应用程序中创建通知?

  18. 18

    如何使.net Core 3.1控制台应用程序中的控制台记录器正常工作

  19. 19

    在VB.NET控制台应用程序中,如何从My.Settings对象获取应用程序的设置?

  20. 20

    如何从提供程序(C#.NET Core控制台应用程序)获取Args?

  21. 21

    如何在.NET Core控制台应用程序中设置DI容器?

  22. 22

    如何从.NET生成独立的控制台应用程序

  23. 23

    如何在具有Windows应用程序输出类型的C#程序上显示控制台

  24. 24

    如何使用C#在内存中执行.NET控制台应用程序?

  25. 25

    .NET C#控制台应用程序如何从生产环境中获取更详细的异常信息

  26. 26

    如何在.net中以Web形式转换控制台应用程序?

  27. 27

    如何在Web应用程序ASP.net MVC中嵌入C#.net控制台应用程序

  28. 28

    如何在.NET Core控制台应用程序中实现MVVM?

  29. 29

    如何在 .Net Core 控制台应用程序中引用 .Net Core 库

热门标签

归档