28
2014
02

ASP.NET如何检测客户端是否安装了.NET Framework


一、微软给的官方做法是:

检测“.NET CLR”User-Agent 字符串
http://msdn.microsoft.com/zh-cn/library/ms749404(v=vs.110).aspx

安装 .NET Framework 后,MSI 会将“.NET CLR”和版本号添加到 UserAgent 字符串中。 下面的示例演示一个嵌入到简单的 HTML 页的脚本。 该脚本搜索 UserAgent 字符串以确定是否已安装 .NET Framework,并在搜索结果中显示状态消息。

<HTML>

  <HEAD>

    <TITLE>Test for the .NET Framework 3.0</TITLE>

    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8" />

    <SCRIPT LANGUAGE="JavaScript">

    <!--

    var dotNETRuntimeVersion = "3.0.04425.00";

    

    function window::onload()

    {

      if (HasRuntimeVersion(dotNETRuntimeVersion))

      {

        result.innerText = 

          "This machine has the correct version of the .NET Framework 3.0: " 

          + dotNETRuntimeVersion

      } 

      else

      {

        result.innerText = 

          "This machine does not have the correct version of the .NET Framework 3.0."

      }

      result.innerText += "\n\nThis machine's userAgent string is: " + 

        navigator.userAgent + ".";

    }

    

    //

    // Retrieve the version from the user agent string and 

    // compare with the specified version.

    //

    function HasRuntimeVersion(versionToCheck)

    {

      var userAgentString = 

        navigator.userAgent.match(/.NET CLR [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 2 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>

    <div id="result" />

  </BODY>

</HTML>



如果搜索“.NET CLR”版本成功,将显示以下类型的状态消息:

This machine has the correct version of the .NET Framework 3.0: 3.0.04425.00

This machine's userAgent string is: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04425.00).

否则,显示以下类型的状态消息:

This machine does not have correct version of the .NET Framework 3.0.

This machine's userAgent string is: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727).




简单一些就是这样了 

     $(document).ready(function() {

            if (navigator.userAgent.indexOf(".NET CLR") > -1) {

                

            } else {

                alert("因客户端未安装.net运行库!");

            }

        });



<SCRIPT language=javascript>

          function checkNetFramework() { 

var msg = navigator.appVersion; 

    if(msg.indexOf(".NET CLR 1.1") > -1) {

msg = ".NET Framework 1.1已安装!"; 

else 

msg = ".NET Framework 1.1未安装!"; 

document.write(msg);

</SCRIPT>


二、如果是在后台就用 Request.Browser.ClrVersion.Major

获得客户端上.NET Framework的主版本号,如果不为0则说明安装了Framework,如果为0则说明未安装Framework.


« 上一篇下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。