System.Environment.OSVersion返回错误的版本

本文关键字:版本 错误 返回 Environment OSVersion System | 更新日期: 2023-09-27 18:19:12

使用windows 10,从windows 8升级=> 8.1 => 10当我使用此代码时

OperatingSystem os = System.Environment.OSVersion;

操作系统。版本={6.2.9200.0}系统。版本

我读到这是因为它显示的版本,但我不明白这是什么意思。

我想要正确的操作系统版本,因为我正在记录web服务上的用户代理字符串,并希望正确识别windows版本的支持。让它正确报告正确版本的最简单方法是什么?

System.Environment.OSVersion返回错误的版本

Windows 10返回该字符串,除非您使用清单声明应用程序是兼容的。为此,添加app.manifest(右键单击您的项目->添加->新建项目->应用程序清单文件),然后取消以下行注释:

<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />

你可以做同样的事情从Windows Vista到Windows 10。

<application>
  <!-- A list of the Windows versions that this application has been tested on and is
       is designed to work with. Uncomment the appropriate elements and Windows will 
       automatically selected the most compatible environment. -->
  <!-- Windows Vista -->
  <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
  <!-- Windows 7 -->
  <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
  <!-- Windows 8 -->
  <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
  <!-- Windows 8.1 -->
  <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
  <!-- Windows 10 -->
  <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>

现在当你运行你的应用程序,它会报告正确的10.0.*。0版本

Nasreddine给出的步骤序列将添加一个清单文件到您的项目中。

还有另一种方法可以添加清单。右键单击项目>属性>应用程序选项卡>查看Windows设置这将显示默认清单,您可以对其进行编辑。我正在使用visual studio 2010 Express。从其他角度看,方法应该是相似的。

对于一个使用非windows组件的项目(我用VB.Net在ESRI arc- objects中编程),似乎没有办法添加清单文件。查看窗口设置按钮被禁用。Nasreddine给出的步骤确实添加了一个清单文件,该文件可以编辑,但不能合并到项目中。我尝试了很多技巧:像添加一个资源(嵌入式和非嵌入式),将其添加到obj> debug文件夹。

kicker测试是我设置了一个纯windows项目,得到一个窗口按钮命令返回正确的版本字符串(在添加清单之后),然后尝试添加一个非windows组件(ESRI插件)。此操作失败,出现错误消息。

我只是想确定操作系统,因为所需文件的文件位置取决于操作系统。

Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment.OperatingSystem + " " + Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment.OperatingSystemVersion

Microsoft.DotNet。需要NuGet包引用

Try:

new ComputerInfo().OSVersion;

输出:

Microsoft Windows 10 Enterprise

注:添加对Microsoft.VisualBasic.Devices;

的引用

Thanks to https://stackoverflow.com/a/39888998/6629672