◆ OS のバージョン・エディション
◆ OS のリリース・ビルド
◆ OS とプロセスの bit 数
◆ .NET Framework のバージョン
◆ コンピュータ名

OS とか Framework のバージョンなど実行してる環境の情報をいろいろ見たかったので作ってみました
このクラスをコピペして 欲しい情報を参照します

public class EnvInfo
{
private static string getRegistryValue(string keyname, string valuename)
=> Registry.GetValue(keyname, valuename, "").ToString();

public static string os_version { get; }
= Environment.OSVersion.VersionString;

public static string os_product_name { get; }
= getRegistryValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName");

public static string os_release { get; }
= getRegistryValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ReleaseId");

public static string os_build { get; }
= getRegistryValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CurrentBuild");

public static string os_bit { get; }
= Environment.Is64BitOperatingSystem ? "64 bit" : "32 bit";

public static string process_bit { get; }
= Environment.Is64BitProcess ? "64 bit" : "32 bit";

public static string framework_version { get; }
= Environment.Version.ToString();

public static string registry_framework_version { get; }
= getRegistryValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full", "Version");

public static string registry_framework_release { get; }
= getRegistryValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full", "Release");

public static string host_name { get; }
= Dns.GetHostName();

public static string machine_name { get; }
= Environment.MachineName;
}

とりあえず全部表示してみます
foreach(var prop in typeof(EnvInfo).GetProperties())
{
Console.WriteLine(prop.Name + ": " + prop.GetValue(null));
}

[Windows10]
os_version: Microsoft Windows NT 6.2.9200.0
os_product_name: Windows 10 Pro
os_release: 1709
os_build: 16299
os_bit: 64 bit
process_bit: 64 bit
framework_version: 4.0.30319.42000
registry_framework_version: 4.7.02556
registry_framework_release: 461308
host_name: DESKTOP
machine_name: DESKTOP

[ちょっと前の Windows10]
os_version: Microsoft Windows NT 6.2.9200.0
os_product_name: Windows 10 Home
os_release: 1511
os_build: 10586
os_bit: 64 bit
process_bit: 64 bit
framework_version: 4.0.30319.42000
registry_framework_version: 4.6.01038
registry_framework_release: 394254
host_name: DESKTOP-F67Vaw
machine_name: DESKTOP-F67VAW

[Windows 7]
os_version: Microsoft Windows NT 6.1.7601 Service Pack 1
os_product_name: Windows 7 Professional
os_release:
os_build: 7601
os_bit: 64 bit
process_bit: 64 bit
framework_version: 4.0.30319.42000
registry_framework_version: 4.7.02558
registry_framework_release: 461310
host_name: NOTE
machine_name: NOTE

os_version にはちょっとわかりづらい NT 6.1 とか NT 6.2 とかそういう情報が入ってます
Windows の通算番号みたいなのですね

os_product_name にはわかりやすい OS のバージョンとエディションが入ってます

os_releaseos_build は Windows 10 のバージョンを調べる用のデータです
Windows7 だと os_release の方のデータは取れませんでした
「Windows 10 1709」みたいな呼び方はたまに見かけると思います

os_bit は OS が 64 bit と 32 bit のどっちで動いてるかです

process_bit はこのアプリのプロセスが 64 bit と 32 bit のどちらかです
AnyCPU でビルドしたときに実際どっちなのかを知りたいときに使えます

framework_version が .NET Framework のバージョンです
4.0 以降はずっと 4.0.xxxxx 形式で
4.5 ~ → 4.0.30319.18010
4.6 ~ → 4.0.30319.42000
となっています
詳細なバージョンがわからないのでこの値での判断は非推奨とされています

registry_framework_version はもう少し詳しい .NET Framework のバージョンです
4.5 系 → 4.5.xxxxx
4.6 系 → 4.6.xxxxx
4.7 系 → 4.7.xxxxx
となっています
マイナーバージョンはわからないです

registry_framework_release は一番詳しい .NET Framework のバージョンです
各バージョンのリリース値です
Windows の OS バージョンの違いで同じ Framework バージョンでも異なるリリースバージョンになっています
.NET Framework versionrelease
.NET Framework 4.5378389
.NET Framework 4.5.1 (Windows 8.1、または Windows Server 2012 R2)378675
.NET Framework 4.5.1 (Windows 8、Windows 7 SP1、または Windows Vista SP2)378758
.NET Framework 4.5.2379893
.NET Framework 4.6 (Windows 10)393295
.NET Framework 4.6 (Windows 10 以外)393297
.NET Framework 4.6.1 (Windows 10 (11 月更新版))394254
.NET Framework 4.6.1 (Windows 10 (11 月更新版) 以外)394271
.NET Framework 4.6.2 (Windows 10 Anniversary Update)394802
.NET Framework 4.6.2 (Windows 10 Anniversary Update 以外)394806
.NET Framework 4.7 (Windows 10 Creators Update)460798
.NET Framework 4.7 (Windows 10 Creators Update 以外)460805
.NET Framework 4.7 (Windows 10 Fall Creators Update)461308
.NET Framework 4.7 (Windows 10 Fall Creators Update 以外)461310

host_namemachine_name はホスト名 (コンピュータ名) です
FQDN を取れるという情報も見たのですが サフィックスをつけてみてもどちらも コンピュータ名で フルコンピュータ名は取れませんでした
違いは host_name は設定したままの文字列で machine_name だとすべて大文字になるところです



参考

https://docs.microsoft.com/ja-jp/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed
https://docs.microsoft.com/ja-jp/dotnet/framework/migration-guide/mitigation-product-versioning