有人问了here个类似的问题,但这是针对特定人群的.净3.5.具体来说,我正在寻找以下信息:
- 确定安装了哪些.NET Framework版本和Service Pack的正确方式是什么?
- 是否有可以使用的注册表项列表?
- 框架版本之间是否存在依赖关系?
有人问了here个类似的问题,但这是针对特定人群的.净3.5.具体来说,我正在寻找以下信息:
注册表为the official way,用于检测是否安装了特定版本的框架.
需要更改哪些注册表项取决于您正在寻找的框架版本:
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
).
确定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\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
如您所见,确定的SP级别.如果您在Windows Media Center或Windows XP Tablet Edition上运行,NET 1.0将发生更改.再一次NET 1.0使用字符串值,而其他所有使用DWORD.
对于NET 1.0这些键的字符串值的格式为#、#、#、##、#.最后是服务包级别.
虽然我没有明确要求,但如果您想知道框架的确切版本号,可以使用以下注册表项:
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这些键的字符串值的格式为#,#,####,#
.字符串的#,#,####
部分是框架版本.
对于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并排运行.
如果出现以下情况,注册表中将不会有v4.5
项.NET 4.5已安装.相反,您必须判断HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full
键是否包含名为Release
的值.如果该值存在.NET 4.5已安装,否则不安装.更多详情请参见here和here.