. net应用程序在Windows 10上返回不同的操作系统版本到PowerShell

本文关键字:操作系统 版本 PowerShell 返回 应用程序 Windows net | 更新日期: 2023-09-27 18:08:52

我正在尝试确定一个。net应用程序的操作系统版本,该应用程序已经使用System.Environment.OSVersion来成功确定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上运行?

. net应用程序在Windows 10上返回不同的操作系统版本到PowerShell

我想这就是原因:

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

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