C#/VBで実行中の .NET Frameworkを調べる方法

2021年3月18日木曜日

C#

t f B! P L

実行中のC#/VBコードから、.NET Frameworkのバージョンを調べる方法です。
インストール時のバージョンチェックなどで使用すると便利かもです。

スポンサーリンク

レジストリから .NET Frameworkバージョンを取得

.NET Framework 4.x系に限定されてしまいますが、レジストリのHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Fullから、.NET Frameworkのバージョンを取得できます。

C#・VBからは、Win32 APIのクラスライブラリを使ってレジストリより値を取得します。

string version = 
  Microsoft.Win32.Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full", "Version", "").ToString();

アセンブリからバージョンを取得

参照しているフレームワークのアセンブリから、バージョンを取得することで、使用している 「.NET Framework」「.NET Core」などのフレームワークバージョンを調べることができます。

次のコードのように、System.Stringのようなクラスのアセンブリを取得し、そのバージョンを取得することで、実行している環境のフレームワークバージョンを調べることが可能です。

string varsion = typeof (System.String).Assembly.GetName ().Version.ToString();
System.Console.WriteLine(varsion);

私の環境には .NET Frameworkがインストールされているため、次のような結果になりました。

実行結果
----------------------
4.0.0.0

プログラムからレジストリにアクセスするには、それなりの権限が必要となりますが、このフレームワークのアセンブリからバージョンを取得する方法であれば、ほとんどの環境で取得できるでしょう。

スポンサーリンク

QooQ