- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么 System.Diagnostics.FileVersionInfo.GetVersionInfo()
返回意外的文件版本信息?我正在查找有关 MPIO 驱动程序的版本信息。目标操作系统是 Server 2008R2 SP1,它应该返回 FileVersion 6.1.7601。取而代之的是,我得到了 6.1.7600 的 2008R2 RTM 版本。
除了文件版本不正确之外,OriginalFilename 也不是我所期望的那样。它是 mpio.sys.mui,但文件名是正确的。
使用资源管理器检查文件属性时会显示正确的版本信息。
这是设计使然、错误还是我使用 FileVersionInfo 的方式有误?是否有任何解决方法,最好是在 Powershell 上?
$mpioPath = 'c:\windows\system32\drivers\mpio.sys'
$v = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($mpioPath)
$v | fl -Property *
Comments :
CompanyName : Microsoft Corporation
FileBuildPart : 7601
FileDescription : MultiPath Support Bus-Driver
FileMajorPart : 6
FileMinorPart : 1
FileName : c:\windows\system32\drivers\mpio.sys
FilePrivatePart : 17619
FileVersion : 6.1.7600.16385 (win7_rtm.090713-1255)
InternalName : mpio.sys
IsDebug : False
IsPatched : False
IsPrivateBuild : False
IsPreRelease : False
IsSpecialBuild : False
Language : English (United States)
LegalCopyright : © Microsoft Corporation. All rights reserved.
LegalTrademarks :
OriginalFilename : mpio.sys.mui
PrivateBuild :
ProductBuildPart : 7601
ProductMajorPart : 6
ProductMinorPart : 1
ProductName : Microsoft® Windows® Operating System
ProductPrivatePart : 17619
ProductVersion : 6.1.7600.16385
SpecialBuild :
使用 C# 程序可以获得相同的结果,因此这似乎更多的是 .Net 功能,而不是 Powershell 特定的功能。
namespace Foo {
class GetFileVersionInfo {
static void Main(string[] args) {
string mpio = @"c:\windows\system32\drivers\mpio.sys";
System.Diagnostics.FileVersionInfo fvInfo;
fvInfo = System.Diagnostics.FileVersionInfo.GetVersionInfo(mpio);
System.Console.WriteLine("Original file name: " + fvInfo.OriginalFilename);
System.Console.WriteLine("FileVersion: " + fvInfo.FileVersion);
}
}
}
使用 FileVer.exe 返回正确的版本信息:
filever $mpioPath
--a-- W32 DRV ENU 6.1.7601.17619 shp 156,544 05-20-2011 mpio.sys
我可以使用 FileVer 并解析它的输出,如果没有别的办法的话。
最佳答案
我猜 FileVer.exe 和 expolrer.exe 的作用与您在 powershell 中的作用相同:
$mpioPath = 'c:\windows\system32\drivers\mpio.sys'
$v = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($mpioPath)
$ver = "{0}.{1}.{2}.{3}" -f $v.FileMajorPart, $v.FileMinorPart, $v.FileBuildPart, $v.FilePrivatePart
关于c# - FileVersionInfo.GetVersionInfo 的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14522497/
有了FileVersionInfo类就很容易读取文件的额外信息,但是我有什么办法可以改变它吗? 谢谢。 最佳答案 .NET Framework 中没有可让您轻松完成此操作的类。文件版本数据存储为 na
我有一些经过合理尝试和测试的代码,它们使用 Windows API 调用来读取 FileVersionInfo 字符串,例如“FileVersion”和“CompanyName”。 我发现一个特定的第
我正在尝试使用 C# 和 System.Diagnostics.FileVersionInfo从文件列表中提取版本信息。我这样做的目的是跟踪唯一的文件路径和版本组合。当文件发生变化时,我希望根据具体发
为什么 System.Diagnostics.FileVersionInfo.GetVersionInfo() 返回意外的文件版本信息?我正在查找有关 MPIO 驱动程序的版本信息。目标操作系统是 S
为什么当加载 .NET DLL、从另一个应用程序域替换(DLL 更新为新版本),然后重新加载(使用 Assembly.LoadFrom)版本信息仍然反射(reflect)旧版本? assembly.G
鉴于 Blah.dll 的 AssemblyInfo.cs 中的这段代码: [assembly: AssemblyVersion("3.3.3.3")] [assembly: AssemblyFile
我有一个在 c# 中执行的程序,有时会在运行时通过将 exe 交换为新程序来更新。我希望程序定期检查它是否已更新,如果是,则重新启动。我使用以下函数来执行此操作。 public static
我在使用 FileVersionInfo.GetVersionInfo() 时遇到了一些严重的问题,希望有人能提供帮助。 问题的基本原理是我正在遍历一个文件夹中的所有文件,每个文件都调用 GetVer
在 Silverlight 3.0 应用程序中,我想使用 AssemblyFileVersion显示应用程序的版本信息。这与 AssemblyVersion 不一样并且通常使用以下代码在 .NET 应
我在 Windows 中有一个 SFX(自解压可执行文件)文件(使用 7z、WinRar 等 zip 工具创建,...),其中包含以下详细信息: 我想在C#中获取CopyRight文本,所以我写了下面
我可以通过 C# 中的命名空间 FileVersionInfo 获取文件版本信息。在 FileVersionInfo 中,如果文件版本为空,则我们无法获取其他信息,如产品版本、公司名称等。当我们右键单
在 MSDN Diagnostics.FileVersionInfo它说,例如,ProductMinorPart返回一个整数或 null如果该值未定义。但是它不是 Nullable - 它如何返回空值
我是一名优秀的程序员,十分优秀!