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

时间:2015-10-25 10:41:57

标签: c#

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

OperatingSystem os = System.Environment.OSVersion;

os.Version = {6.2.9200.0} System.Version

我读到这是因为版本是manifested for,但我不明白这意味着什么。

我想要正确的操作系统版本,因为我正在Web服务上记录用户代理字符串,并且想要正确识别Windows版本以获得支持。什么是最简单的方法来正确报告正确的版本?

4 个答案:

答案 0 :(得分:26)

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版本

答案 1 :(得分:0)

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

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

对于使用非Windows组件的项目(我使用VB.Net在ESRI arc-objcets中编程),似乎无法添加清单文件。查看Windows设置 按钮被禁用。 Nasreddine给出的步骤确实添加了一个Manifest文件,该文件可以编辑,但是不能合并到项目中。 我尝试了许多技巧:例如添加为资源(嵌入式而不是嵌入式),将其添加为obj> debug文件夹。

踢球测试是我建立了一个纯Windows项目,得到了一个windo按钮命令,以返回正确的版本字符串(添加清单后),然后尝试添加非Windows组件(ESRI Addin)。失败并显示错误消息。

我正在尝试标识操作系统,因为所需文件的文件位置取决于操作系统。希望这可以使其他人避免陷入困境。

答案 2 :(得分:0)

尝试:

new ComputerInfo().OSVersion;

输出:

  

Microsoft Windows 10企业版

注意:添加对Microsoft.VisualBasic.Devices的引用;

感谢https://stackoverflow.com/a/39888998/6629672

答案 3 :(得分:0)

另一种选择是

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

Microsoft.DotNet.PlatformAbstractions 需要 NuGet 包参考

相关问题