注册表是官方方式 https://learn.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed检测是否安装了特定版本的框架。
根据您要查找的框架版本,需要更改哪些注册表项:
Framework Version Registry Key
------------------------------------------------------------------------------------------
1.0 HKLM\Software\Microsoft\.NETFramework\Policy\v1.0\3705
1.1 HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\Install
2.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\Install
3.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\InstallSuccess
3.5 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\Install
4.0 Client Profile HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client\Install
4.0 Full Profile HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full\Install
一般来说,您正在寻找:
"Install"=dword:00000001
.NET 1.0 除外,其中该值是字符串 (REG_SZ
) 而不是数字 (REG_DWORD
).
确定服务包级别遵循类似的模式:
Framework Version Registry Key
------------------------------------------------------------------------------------------
1.0 HKLM\Software\Microsoft\Active Setup\Installed Components\{78705f0d-e8db-4b2d-8193-982bdda15ecd}\Version
1.0[1] HKLM\Software\Microsoft\Active Setup\Installed Components\{FDC11A6F-17D1-48f9-9EA3-9051954BAA24}\Version
1.1 HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\SP
2.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\SP
3.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\SP
3.5 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\SP
4.0 Client Profile HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client\Servicing
4.0 Full Profile HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full\Servicing
[1] Windows Media Center or Windows XP Tablet Edition
正如您所看到的,如果您在 Windows Media Center 或 Windows XP Tablet Edition 上运行,则确定 .NET 1.0 的 SP 级别会发生变化。同样,.NET 1.0 使用字符串值,而所有其他值都使用 DWORD。
对于 .NET 1.0,这些键中任意一个的字符串值的格式为#,#,####,#。最后一个 # 是 Service Pack 级别。
虽然我没有明确要求这一点,但如果您想知道框架的确切版本号,您可以使用这些注册表项:
Framework Version Registry Key
------------------------------------------------------------------------------------------
1.0 HKLM\Software\Microsoft\Active Setup\Installed Components\{78705f0d-e8db-4b2d-8193-982bdda15ecd}\Version
1.0[1] HKLM\Software\Microsoft\Active Setup\Installed Components\{FDC11A6F-17D1-48f9-9EA3-9051954BAA24}\Version
1.1 HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322
2.0[2] HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\Version
2.0[3] HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\Increment
3.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Version
3.5 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\Version
4.0 Client Profile HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Version
4.0 Full Profile HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Version
[1] Windows Media Center or Windows XP Tablet Edition
[2] .NET 2.0 SP1
[3] .NET 2.0 Original Release (RTM)
同样,.NET 1.0 使用字符串值,而所有其他值都使用 DWORD。
补充笔记
对于 .NET 1.0,这些键中任意一个的字符串值的格式为#,#,####,#
. The #,#,####
字符串的一部分是框架版本。
对于.NET 1.1,我们使用注册表项本身的名称,它代表版本号。
最后,如果查看依赖关系,.NET 3.0 向 .NET 2.0 添加了附加功能,因此 .NET 2.0 和 .NET 3.0 都必须评估为已安装,才能正确表明 .NET 3.0 已安装。同样,.NET 3.5 向 .NET 2.0 和 .NET 3.0 添加了附加功能,因此 .NET 2.0、.NET 3.0 和 .NET 3. 都应评估为已安装,以正确表示已安装 .NET 3.5。
.NET 4.0 安装了新版本的 CLR(CLR 版本 4.0),它可以与 CLR 2.0 并行运行。
.NET 4.5 更新
不会有一个v4.5
如果安装了 .NET 4.5,则在注册表中键入该键。相反,您必须检查是否HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full
键包含一个名为Release
。如果存在此值,则安装 .NET 4.5,否则不安装。可以找到更多详细信息here https://stackoverflow.com/a/15227828/270591 and here https://learn.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed.