目前,我有点困惑的版本,我可以通过native .net(C#),powershell和windows资源管理器。
正如你在屏幕截图中看到的,C#代码确定FileMajorPart=6和FileMinorPart=2。我预计至少主要版本10。为什么powershell显示正确的版本,即使使用相同的功能?
x1c 0d1x的数据
此外...看来,这只发生在一些特殊的文件.也calc.exe显示一个错误的版本.其他. exe文件显示正确.
C#:
using System.Diagnostics;
FileVersionInfo test = FileVersionInfo.GetVersionInfo(@"c:\windows\system32\notepad.exe");
字符串
测试结果:
- test {File: c:\windows\system32\notepad.exe
InternalName: Notepad
OriginalFilename: NOTEPAD.EXE.MUI
FileVersion: 10.0.19041.1 (WinBuild.160101.0800)
FileDescription: Editor
Product: Betriebssystem Microsoft® Windows®
ProductVersion: 10.0.19041.1
Debug: False
Patched: False
PreRelease: False
PrivateBuild: False
SpecialBuild: False
Language: Deutsch (Deutschland)
} System.Diagnostics.FileVersionInfo
...
FileMajorPart 6 int
FileMinorPart 2 int
FileName "c:\\windows\\system32\\notepad.exe" string
FilePrivatePart 3636 int
FileVersion "10.0.19041.1 (WinBuild.160101.0800)" string
...
ProductBuildPart 19041 int
ProductMajorPart 10 int
ProductMinorPart 0 int
ProductName "Betriebssystem Microsoft® Windows®" string
ProductPrivatePart 3636 int
ProductVersion "10.0.19041.1" string
SpecialBuild "" string
型
Powershell:
PS C:\> [System.Diagnostics.FileVersionInfo]::GetVersionInfo("c:\windows\system32\notepad.exe") | fl *
FileVersionRaw : 10.0.19041.3636
ProductVersionRaw : 10.0.19041.3636
Comments :
CompanyName : Microsoft Corporation
FileBuildPart : 19041
FileDescription : Editor
FileMajorPart : 10
FileMinorPart : 0
FileName : c:\windows\system32\notepad.exe
FilePrivatePart : 3636
FileVersion : 10.0.19041.1 (WinBuild.160101.0800)
InternalName : Notepad
IsDebug : False
IsPatched : False
IsPrivateBuild : False
IsPreRelease : False
IsSpecialBuild : False
Language : Deutsch (Deutschland)
LegalCopyright : © Microsoft Corporation. Alle Rechte
vorbehalten.
LegalTrademarks :
OriginalFilename : NOTEPAD.EXE.MUI
PrivateBuild :
ProductBuildPart : 19041
ProductMajorPart : 10
ProductMinorPart : 0
ProductName : Betriebssystem Microsoft® Windows®
ProductPrivatePart : 3636
ProductVersion : 10.0.19041.1
SpecialBuild :
型
你知道为什么会这样吗?
我用的是.net 7.0 for c#。
提前感谢您的问候,沃尔夫冈
我尝试使用不同的工具,如powershell / windows资源管理器。
1条答案
按热度按时间gupuwyp21#
System.Diagnostics.FileVersionInfo
类型的.FileVersion
和.ProductVersion
属性是“cooked”值,它 * 屏蔽 * 了遗留行为,但底层版本号组件单独属性(.FileMajorPar
,.FileMinorPart
,...)确实报告了遗留值(如果适用)。supportedOS
元素的ID
属性声明了兼容的Windows版本。6.2
作为操作系统版本**。10.0
。taskmgr.exe
)并切换到其Details
视图(左侧边栏中的x1c 0d1x)and add the
Operating system context”列以查看(向下滚动直到看到它-列表 * 不 * 按名称排序)。Windows Vista
.应用程序要么 * 没有 * manifest,要么是为Vista显式显示的。Windows 8
,Windows 8.1
.您的屏幕截图暗示您正在使用的IDE没有应用程序清单,这解释了您看到的值。
请注意,Windows PowerShell(
powershell.exe
)和PowerShell (Core) 7+(pwsh.exe
)* 都 * 针对Windows 10+显示,这就是为什么您在PowerShell会话中运行(进程内)命令的输出中看到10.0
值的原因。这同样适用于类似于使用文件资源管理器GUI检查文件属性。