Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET应用程序正在将不同的操作系统版本返回到Windows 10上的PowerShell_C#_.net_Windows_Powershell_Windows 10 - Fatal编程技术网

C# .NET应用程序正在将不同的操作系统版本返回到Windows 10上的PowerShell

C# .NET应用程序正在将不同的操作系统版本返回到Windows 10上的PowerShell,c#,.net,windows,powershell,windows-10,C#,.net,Windows,Powershell,Windows 10,我正在尝试确定.NET应用程序中的OS版本,该应用程序已使用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时

我正在尝试确定.NET应用程序中的OS版本,该应用程序已使用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上运行?

我认为:

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

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


您的说法是错误的,因为您注意到的8.1输出实际上是为了与Windows 8兼容。检查PowerShell控制台的app.config,研究您需要在自己的控制台中包含的黑客行为。@LexLi实际上,我的说法是正确的,因为这是观察到的行为。此外,观察到的行为违反了最小惊讶原则,这进一步证实了我的主张。现在,请告诉我,您提到的这个神秘的配置在哪里?检查答案,它会说全部。作为参考,
System.Environment.OSVersion
属性实现:。谢谢,只需要在清单文件中添加Windows 10 GUID作为受支持的操作系统。