通过读取注册表项或通过查询 Internet Explorer 中的用户代理字符串,可以检测是否已安装了 .NET Framework 3.5。
读取注册表项安装成功完成后,.NET Framework 3.5 安装程序会写入注册表项。通过检查下表中列出的注册表项,可以检测是否安装了 .NET Framework 3.5。
注册表项名称 | 值 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5 | 名称:Install 类型:DWORD 数据:1 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post Platform | 名称:Version 类型:REG_SZ 数据:.NET CLR 3.5.build number |
当计算机上安装了 .NET Framework 3.5 后,.NET Framework 3.5 版本号将显示为浏览器标头中报告的用户代理字符串的一部分。以下示例演示了一个示例页,该页使用 JavaScript 检测并报告是否安装了 .NET Framework 3.5。
<html>
<head>
<title>Test for .NET Framework 3.5</title>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8" />
<script type="text/JavaScript">
<!--
var NETFX3RuntimeVersion = "3.5.21022";
function body_onload()
{
var result = document.getElementById("result");
if (HasRuntimeVersion(NETFX3RuntimeVersion))
{
result.innerHTML = "This machine has the correct version of the .NET Framework 3.5 runtime: "
+ NETFX3RuntimeVersion + "."
+ "\n\nThis machine's userAgent string is: "
+ navigator.userAgent + ".";
}
else
{
result.innerHTML = "The .NET Framework version 3.5 is not installed on this computer.<br/>"
+ "Click <a href='http://msdn.microsoft.com/windowsvista/default.aspx'>"
+ " here</a> to get the .NET Framework 3.5 now.";}
}
//
// Retrieve the version from the user agent string and compare with specified version.
//
function HasRuntimeVersion(versionToCheck)
{
var userAgentString =
navigator.userAgent.match(/.NET CLR 3.5.[0-9]+/g);
if (userAgentString != null)
{
var i;
for (i = 0; i < userAgentString.length; ++i)
{
if (CompareVersions(GetVersion(versionToCheck),
GetVersion(userAgentString[i])) <= 0)
return true;
}
}
return false;
}
//
// Extract the numeric part of the version string.
//
function GetVersion(versionString)
{
var numericString = versionString.match(/([0-9]+)\.([0-9]+)\.([0-9]+)/i);
return numericString.slice(1);
}
//
// Compare the version strings by converting them to numeric format.
//
function CompareVersions(version1, version2)
{
for (i = 0; i < version1.length; ++i)
{
var number1 = new Number(version1[i]);
var number2 = new Number(version2[i]);
if (number1 < number2)
return -1;
if (number1 > number2)
return 1;
}
return 0;
}
-->
</script>
</head>
<body onload="body_onload();">
<div id="result" ></div>
</body>
</html>
如果搜索字符串“.NET Framework 3.5”版本成功,将显示以下消息:
This machine has the correct version of the .NET Framework 3.5: 3.5.28015.00.
This machine's userAgent string is: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.5.28015.00).
(根据测试 .NET Framework 时使用的不同浏览器和浏览器版本,用户代理字符串的详细信息会略有不同。)
如果没有安装“.NET Framework 3.5”,将显示以下消息:
The .NET Framework version 3.5 is not installed on this computer.
Click here to get the .NET Framework 3.5 now.
转载于:https://www.cnblogs.com/sqshine/archive/2009/03/26/1422433.html