天天看点

检测 .NET Framework 3.5

通过读取注册表项或通过查询 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

继续阅读