Определение установленных версий .NET Framework программным путём

Номера установленных версий .NET Framework хранятся в системном реестре Windows. Для их определения нужно открыть ветку реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP, в подразделах которой находятся сведения о конкретных версиях.

Детальная информация содержится в следующих параметрах.

  • Install — флаг установки версии
  • Version — полный номер версии
  • SP — номер установленного Service Pack
  • InstallPath — папка установки

Редактор реестра с открытой веткой установленных версий .Net Framework

Начиная с .NET Framework 4.0, параметры хранятся во вложенных подразделах Client и Full.

Чтобы проверить, установлена ли версия 4.0 или 4.5, нужно проверить наличие параметра Release в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full. Если такой параметр есть, значит установлена 4.5, его значением будет номер версии. Чтобы определить, финальная версия 4.5, или нет, значение Release должно быть больше или равно 378389.

Пример кода на C#, выводящего в консоль установленные версии .NET Framework

Код скомпилируется и выполнится на .NET Framework 4.0 и старше. Для запуска требуются права администратора.

public class NetVersionDetector
{
	public static void Main()
	{
		using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
		{
			foreach (string versionKeyName in ndpKey.GetSubKeyNames())
			{
				if (versionKeyName.StartsWith("v"))
				{
					RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName);
					string name = (string)versionKey.GetValue("Version", "");
					string sp = versionKey.GetValue("SP", "").ToString();
					string install = versionKey.GetValue("Install", "").ToString();

					if (install == "")
						Console.WriteLine(versionKeyName + "  " + name);
					else
					{
						if (sp != "" && install == "1")
						{
							Console.WriteLine(versionKeyName + "  " + name + "  SP" + sp);
						}

					}

					if (name != "")
					{
						continue;
					}

					foreach (string subKeyName in versionKey.GetSubKeyNames())
					{
						RegistryKey subKey = versionKey.OpenSubKey(subKeyName);
						name = (string)subKey.GetValue("Version", "");

						if (name != "")
							sp = subKey.GetValue("SP", "").ToString();

						install = subKey.GetValue("Install", "").ToString();

						if (install == "")
							Console.WriteLine(versionKeyName + "  " + name);
						else
						{
							if (sp != "" && install == "1")
							{
								Console.WriteLine("  " + subKeyName + "  " + name + "  SP" + sp);
							}
							else if (install == "1")
							{
								Console.WriteLine("  " + subKeyName + "  " + name);
							}

						}

					}

				}
			}
		}
	}
}

Данная программа выдаст примерно следующий результат.

v1.1.4322               SP1
v2.0.50727      2.2.30729       SP2
v3.0    3.2.30729       SP2
v3.5    3.5.30729.01    SP1
v4
        Client  4.0.30319
        Full    4.0.30319

Таблица параметров реестра для точного определения установленной версии .NET Framework

.NET Framework Пакет обновления Раздел реестра Параметр /
Тип / Значение
4.5 Исходный выпуск HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full Release / REG_DWORD / Существует
4 — Client Исходный выпуск HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client Install / REG_DWORD / 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client Version / REG_SZ / 4.0.30319.0
4 — Full Исходный выпуск HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full Install / REG_DWORD / 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full Version / REG_SZ / 4.0.30319.0
3.5 Исходный выпуск HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5 Install / REG_DWORD / 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5 SP / REG_DWORD / 0
3.5 Service Pack 1 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5 Install / REG_DWORD / 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5 SP / REG_DWORD / 1
3.0 Исходный выпуск HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup Install / REG_DWORD / 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0 SP / REG_DWORD / 0
3.0 Service Pack 1 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0 Install / REG_DWORD / 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0 SP / REG_DWORD / 1
3.0 Service Pack 2 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0 Install / REG_DWORD / 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0 SP / REG_DWORD / 2
2.0 Исходный выпуск HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727 Install / REG_DWORD / 1
HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727 SP / REG_DWORD / 0
2.0 Service Pack 1 HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727 Install / REG_DWORD / 1
HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727 SP / REG_DWORD / 1
2.0 Service Pack 2 HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727 Install / REG_DWORD / 1
HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727 SP / REG_DWORD / 2
1.1 (в 32-разрядных ОС) Исходный выпуск HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322 Install / REG_DWORD / 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322 SP / REG_DWORD / 0
1.1 (в 32-разрядных ОС) Service Pack 1 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322 Install / REG_DWORD / 1
1.1 (в 64-разрядных ОС) Исходный выпуск HKLM\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v1.1.4322 Install / REG_DWORD / 1
HKLM\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v1.1.4322 SP / REG_DWORD / 0
1.1 (в 64-разрядных ОС) Service Pack 1 HKLM\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v1.1.4322 Install / REG_DWORD / 1
HKLM\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v1.1.4322 SP / REG_DWORD / 1
1.0 (кроме Windows XP Media Center и Tablet PC) Исходный выпуск HKEY_LOCAL_MACHINE\Software\Microsoft\Active Setup\Installed Components\{78705f0d-e8db-4b2d-8193-982bdda15ecd} Version / REG_SZ / 1.0.3705.0
1.0 (кроме Windows XP Media Center и Tablet PC) Service Pack 1 HKEY_LOCAL_MACHINE\Software\Microsoft\Active Setup\Installed Components\{78705f0d-e8db-4b2d-8193-982bdda15ecd} Version / REG_SZ / 1.0.3705.1
1.0 (кроме Windows XP Media Center и Tablet PC) Service Pack 2 HKEY_LOCAL_MACHINE\Software\Microsoft\Active Setup\Installed Components\{78705f0d-e8db-4b2d-8193-982bdda15ecd} Version / REG_SZ / 1.0.3705.2
1.0 (кроме Windows XP Media Center и Tablet PC) Service Pack 3 HKEY_LOCAL_MACHINE\Software\Microsoft\Active Setup\Installed Components\{78705f0d-e8db-4b2d-8193-982bdda15ecd} Version / REG_SZ / 1.0.3705.3
1.0 (поставляется с Windows XP Media Center 2002/2004 и Tablet PC 2004) Service Pack 2 HKEY_LOCAL_MACHINE\Software\Microsoft\Active Setup\Installed Components\{FDC11A6F-17D1-48f9-9EA3-9051954BAA24} Version / REG_SZ / 1.0.3705.2
1.0 (поставляется с Windows XP Media Center 2005 и Tablet PC 2005) Service Pack 3 HKEY_LOCAL_MACHINE\Software\Microsoft\Active Setup\Installed Components\{FDC11A6F-17D1-48f9-9EA3-9051954BAA24} Version / REG_SZ / 1.0.3705.3

Материалы по теме