如何检测安装了哪些 .NET Framework 版本和服务包?

2023-12-28

有人问了类似的问题here https://stackoverflow.com/questions/198931/how-do-i-tell-if-net-35-sp1-is-installed,但它特定于 .NET 3.5。具体来说,我正在寻找以下内容:

  1. 确定安装了哪些 .NET Framework 版本和服务包的正确方法是什么?
  2. 是否有可以使用的注册表项列表?
  3. 框架版本之间是否存在依赖关系?

注册表是官方方式 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.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检测安装了哪些 .NET Framework 版本和服务包? 的相关文章

随机推荐