DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

ファイルのバージョン情報を取得する

EXE、DLLファイルなどのプロパティで表示される「バージョン情報」(バージョン、説明、著作権、会社名などなど)を取得するには、FileVersionInfoオブジェクトを使います。指定したファイルに対応したFileVersionInfoオブジェクトを取得するには、FileVersionInfo.GetVersionInfoメソッドを使用します。

次の例ではメモ帳(C:\WINDOWS\NOTEPAD.EXE)のバージョン情報を表示しています。

VB.NET
コードを隠すコードを選択
'NOTEPAD.EXEのFileVersionInfoオブジェクトを取得する
Dim vi As System.Diagnostics.FileVersionInfo = _
    System.Diagnostics.FileVersionInfo.GetVersionInfo( _
        "C:\WINDOWS\NOTEPAD.EXE")

'バージョン番号
Console.WriteLine("FileVersion:{0}", vi.FileVersion)
'メジャーバージョン番号
Console.WriteLine("FileMajorPart:{0}", vi.FileMajorPart)
'マイナバージョン番号
Console.WriteLine("FileMinorPart:{0}", vi.FileMinorPart)
'プライベートパート番号
Console.WriteLine("FilePrivatePart:{0}", vi.FilePrivatePart)
'ビルド番号
Console.WriteLine("FileBuildPart:{0}", vi.FileBuildPart)
'プライベートバージョン
Console.WriteLine("PrivateBuild:{0}", vi.PrivateBuild)
'スペシャルビルド
Console.WriteLine("SpecialBuild:{0}", vi.SpecialBuild)

'説明
Console.WriteLine("FileDescription:{0}", vi.FileDescription)
'著作権
Console.WriteLine("LegalCopyright:{0}", vi.LegalCopyright)
'会社名
Console.WriteLine("CompanyName:{0}", vi.CompanyName)
'コメント
Console.WriteLine("Comments:{0}", vi.Comments)
'内部名
Console.WriteLine("InternalName:{0}", vi.InternalName)
'言語
Console.WriteLine("Language:{0}", vi.Language)
'商標
Console.WriteLine("LegalTrademarks:{0}", vi.LegalTrademarks)
'オリジナルファイル名
Console.WriteLine("OriginalFilename:{0}", vi.OriginalFilename)

'製品名
Console.WriteLine("ProductName:{0}", vi.ProductName)
'製品バージョン
Console.WriteLine("ProductVersion:{0}", vi.ProductVersion)
'製品メジャーバージョン番号
Console.WriteLine("ProductMajorPart:{0}", vi.ProductMajorPart)
'製品マイナバージョン番号
Console.WriteLine("ProductMinorPart:{0}", vi.ProductMinorPart)
'製品プライベートバージョン番号
Console.WriteLine("ProductPrivatePart:{0}", vi.ProductPrivatePart)
'製品ビルド番号
Console.WriteLine("ProductBuildPart:{0}", vi.ProductBuildPart)

'デバッグ情報があるか
Console.WriteLine("IsDebug:{0}", vi.IsDebug)
'パッチされているか
Console.WriteLine("IsPatched:{0}", vi.IsPatched)
'プレリリースか
Console.WriteLine("IsPreRelease:{0}", vi.IsPreRelease)
'スペシャルビルドか
Console.WriteLine("IsSpecialBuild:{0}", vi.IsSpecialBuild)
C#
コードを隠すコードを選択
//NOTEPAD.EXEのFileVersionInfoオブジェクトを取得する
System.Diagnostics.FileVersionInfo vi =
    System.Diagnostics.FileVersionInfo.GetVersionInfo(
        @"C:\WINDOWS\NOTEPAD.EXE");

//バージョン番号
Console.WriteLine("FileVersion:{0}", vi.FileVersion);
//メジャーバージョン番号
Console.WriteLine("FileMajorPart:{0}", vi.FileMajorPart);
//マイナバージョン番号
Console.WriteLine("FileMinorPart:{0}", vi.FileMinorPart);
//プライベートパート番号
Console.WriteLine("FilePrivatePart:{0}", vi.FilePrivatePart);
//ビルド番号
Console.WriteLine("FileBuildPart:{0}", vi.FileBuildPart);
//プライベートバージョン
Console.WriteLine("PrivateBuild:{0}", vi.PrivateBuild);
//スペシャルビルド
Console.WriteLine("SpecialBuild:{0}", vi.SpecialBuild);

//説明
Console.WriteLine("FileDescription:{0}", vi.FileDescription);
//著作権
Console.WriteLine("LegalCopyright:{0}", vi.LegalCopyright);
//会社名
Console.WriteLine("CompanyName:{0}", vi.CompanyName);
//コメント
Console.WriteLine("Comments:{0}", vi.Comments);
//内部名
Console.WriteLine("InternalName:{0}", vi.InternalName);
//言語
Console.WriteLine("Language:{0}", vi.Language);
//商標
Console.WriteLine("LegalTrademarks:{0}", vi.LegalTrademarks);
//オリジナルファイル名
Console.WriteLine("OriginalFilename:{0}", vi.OriginalFilename);

//製品名
Console.WriteLine("ProductName:{0}", vi.ProductName);
//製品バージョン
Console.WriteLine("ProductVersion:{0}", vi.ProductVersion);
//製品メジャーバージョン番号
Console.WriteLine("ProductMajorPart:{0}", vi.ProductMajorPart);
//製品マイナバージョン番号
Console.WriteLine("ProductMinorPart:{0}", vi.ProductMinorPart);
//製品プライベートバージョン番号
Console.WriteLine("ProductPrivatePart:{0}", vi.ProductPrivatePart);
//製品ビルド番号
Console.WriteLine("ProductBuildPart:{0}", vi.ProductBuildPart);

//デバッグ情報があるか
Console.WriteLine("IsDebug:{0}", vi.IsDebug);
//パッチされているか
Console.WriteLine("IsPatched:{0}", vi.IsPatched);
//プレリリースか
Console.WriteLine("IsPreRelease:{0}", vi.IsPreRelease);
//スペシャルビルドか
Console.WriteLine("IsSpecialBuild:{0}", vi.IsSpecialBuild);

上記のコードを実行したときの出力例は、以下のようになります。

FileVersion:4.10.1998
FileMajorPart:4
FileMinorPart:10
FilePrivatePart:1998
FileBuildPart:0
PrivateBuild:
SpecialBuild:
FileDescription:Windows Notepad application file
LegalCopyright:Copyright (C) Microsoft Corp. 1991-1998
CompanyName:Microsoft Corporation
Comments:
InternalName:Notepad
Language:日本語
LegalTrademarks:
OriginalFilename:NOTEPAD.EXE
ProductName:Microsoft(R) Windows(R) Operating System
ProductVersion:4.10.1998
ProductMajorPart:4
ProductMinorPart:10
ProductPrivatePart:1998
ProductBuildPart:0
IsDebug:False
IsPatched:False
IsPreRelease:False
IsSpecialBuild:False

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • Windows Vista以降でUACが有効になっていると、ファイルへの書き込みに失敗する可能性があります。詳しくは、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。