小编Edd*_*die的帖子

Powershell WMI输出与c#WMI输出不匹配

首先,我想感谢您帮助我解决这个问题.我非常感谢你的时间和努力.

标题总结得很好但是我会提供一些细节.基本上,如果我使用C#获取操作系统版本,它将返回结果6.2,即使我的系统是8.1,它应该返回6.3.在我的研究之后,我发现这是System.Enviroment类中的文档限制,...必须喜欢那些"功能".

通过进入reg并将我的6.2结果与HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion下的当前版本密钥进行比较,我找到了解决这个问题的方法.但是,这是一个非常冒险的操作,因为reg信息可能会更改,恕不另行通知.

当我试图通过Powershell进行WMI调查时,这一切都变得棘手了.我不记得为什么我通过Powershell进行了WMI搜索,我猜它不仅仅是那些好奇的猫:)


C#代码:


string version = Environment.OSVersion.ToString();
MessageBox.Show(version);
//Output "Microsoft Windows NT 6.2.9200.0"
Run Code Online (Sandbox Code Playgroud)

Powershell代码:


[System.Environment]::OSVersion | Select-Object -Property VersionString
//OUtput "Microsoft Windows NT 6.3.9600.0"
Run Code Online (Sandbox Code Playgroud)

我已经尝试了我的C#程序的x86和x64版本,以及运行Powershell x86和x64.差异没有改变.

这给我提出了几个问题,但基本的问题是Powershell从哪里获得正确的信息?Powershell是否像我原先计划的那样使用reg来修复输出?由于我的构建目标.Net 3.5做Powershell拉.Net 4.5(改变我的构建,这没有改变).

从我的理解[System.Environment] :: OSVersion拉取信息与System.Environment.OSVersion相同.

Powershell如何工作和C#失败?

:) 再次感谢!

c# powershell wmi

7
推荐指数
1
解决办法
194
查看次数

标签 统计

c# ×1

powershell ×1

wmi ×1