Pourquoi System.Diagnostics.FileVersionInfo.GetVersionInfo()
renvoie-t-il des informations de version de fichier inattendues? Je cherche des informations de version sur les pilotes MPIO. Le système d'exploitation cible est Server 2008R2 SP1, qui doit renvoyer FileVersion 6.1.7601. Au lieu de cela, j'ai obtenu la version 2008R2 RTM de 6.1.7600.Comportement inattendu avec FileVersionInfo.GetVersionInfo
En plus d'une version de fichier incorrecte, le nomFichierFichier n'est pas ce que j'attendrais qu'il soit non plus. C'est mpio.sys.mui, bien que FileName soit correct.
Des informations de version correctes s'affichent lors de l'examen des propriétés du fichier avec Explorer.
Est-ce que c'est intentionnellement, un bug ou est-ce que j'utilise FileVersionInfo erroneus un moyen? Existe-t-il des solutions de contournement, de préférence sur 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 :
Le même résultat est obtenu avec un programme C#, donc cela semble être plus de fonctionnalité .Net que Powershell spécifique.
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);
}
}
}
L'utilisation Filever.exe retourne informations version correcte:
filever $mpioPath
--a-- W32 DRV ENU 6.1.7601.17619 shp 156,544 05-20-2011 mpio.sys
je pouvais user FileVer et analyser sa sortie, si rien ne fonctionne.
Je l'accepte comme la réponse, mais il n'explique pas pourquoi les informations de version ne correspond pas . – vonPryz