注册表是the official way,用于检测是否安装了特定版本的框架。
根据您要查找的框架版本,需要更改哪些注册表项:
框架版本注册表项
-------------------------------------------------- --------------------------------------
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 客户端配置文件 HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client\Install
4.0 完整配置文件 HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full\Install
通常您正在寻找:
"Install"=dword:00000001
.NET 1.0 除外,其中值是字符串 (REG_SZ) 而不是数字 (REG_DWORD)。
确定服务包级别遵循类似的模式:
框架版本注册表项
-------------------------------------------------- --------------------------------------
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 框架设置\NDP\v1.1.4322\SP
2.0 HKLM\Software\Microsoft\NET 框架设置\NDP\v2.0.50727\SP
3.0 HKLM\Software\Microsoft\NET 框架设置\NDP\v3.0\SP
3.5 HKLM\Software\Microsoft\NET 框架设置\NDP\v3.5\SP
4.0 客户端配置文件 HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client\Servicing
4.0 完整配置文件 HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full\Servicing
[1] Windows Media Center 或 Windows XP 平板电脑版
如您所见,如果您在 Windows Media Center 或 Windows XP Tablet Edition 上运行,确定 .NET 1.0 的 SP 级别会发生变化。同样,.NET 1.0 使用字符串值,而所有其他版本都使用 DWORD。
对于 .NET 1.0,这两个键的字符串值的格式为 #,#,####,#。最后一个 # 是 Service Pack 级别。
虽然我没有明确要求这样做,但如果您想知道框架的确切版本号,您可以使用以下注册表项:
框架版本注册表项
-------------------------------------------------- --------------------------------------
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 框架设置\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 客户端配置文件 HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Version
4.0 完整配置文件 HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Version
[1] Windows Media Center 或 Windows XP 平板电脑版
[2] .NET 2.0 SP1
[3] .NET 2.0 原始版本 (RTM)
同样,.NET 1.0 使用字符串值,而所有其他版本都使用 DWORD。
附加说明
对于 .NET 1.0,这两个键的字符串值的格式为 #,#,####,#。字符串的#,#,#### 部分是框架版本。
对于 .NET 1.1,我们使用注册表项本身的名称,它代表版本号。
1234563同样,.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 更新
如果安装了 .NET 4.5,注册表中不会有 v4.5 键。相反,您必须检查HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full 键是否包含名为Release 的值。如果存在此值,则安装 .NET 4.5,否则不安装。更多详情请见here和here。