【问题标题】:.NET app returning different OS version to PowerShell on Windows 10.NET 应用程序在 Windows 10 上向 PowerShell 返回不同的操作系统版本
【发布时间】:2015-08-20 14:34:15
【问题描述】:

我正在尝试确定 .NET 应用程序中的操作系统版本,该应用程序已使用 System.Environment.OSVersion 成功确定所有 Windows 版本(直至 Windows 8.1)的版本。

但是,在 Windows 10 上的 .NET 应用程序中调用 System.Environment.OSVersion 时,返回的版本是 Microsoft Windows NT 6.2.9200.0(与 Windows 8.1 上的输出完全相同)。但是,当通过 PowerShell 调用 [System.Environment]::OSVersion 时,输出会显示 Microsoft Windows NT 10.0.10240.0

我的印象是 PowerShell 在后台使用 .NET,并希望这两个调用返回完全相同的输出。为什么输出存在差异,更重要的是,如何检测我的应用是否在 Windows 10 上运行?

【问题讨论】:

  • 您的声明是错误的,因为您注意到的 8.1 输出实际上是为了兼容 Windows 8。检查 PowerShell 控制台的 app.config 以研究您需要包含在自己的 hack 中。
  • @LexLi 实际上,我的说法是正确的,因为它是观察到的行为。此外,观察到的行为违背了最小惊讶原则,这进一步证实了我的主张。现在,请告诉我,你提到的这个神话配置在哪里?
  • 检查答案,它说明了一切。

标签: c# .net windows powershell windows-10


【解决方案1】:

我认为this is the cause

随着 Windows 8.1 的发布,GetVersion API 的行为发生了变化,它将为操作系统版本返回的值。 GetVersion 函数返回的值现在取决于应用程序的显示方式。

未针对 Windows 8.1 或 Windows 10 显示的应用程序将返回 Windows 8 操作系统版本值 (6.2)。

【讨论】:

  • 供参考,System.Environment.OSVersion 属性实现:System.Environment.OSVersion
  • 谢谢,只需在清单文件中添加 Windows 10 GUID 作为支持的操作系统即可。
猜你喜欢
  • 1970-01-01
  • 2017-12-05
  • 2017-03-11
  • 2021-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-25
  • 1970-01-01
相关资源
最近更新 更多