“黄沙中,飞舞着我们的先王,他们在空中俯视着子民们对蓝色的向往。” 火之章 霜之章 [最新更新:9月15日]

你在这里看到的是一位.NET程序员的执着及其信仰的效率世界观。我们行走在消逝中,但我们都有希望,都有传承。

根据客户端操作系统类型和CLR信息来判断.netframework的支持情况 ,2008-11-06,0条评论

我们常在给客户下载某个程序的时候,需要首先获知客户是否已经安装有CLR,现在最普遍的是判断是否安装有CLR2.0,下面是我在做某个软件下载的时候用到的一段算法,按照现实情况,支持到2011年没有问题。下面发出来,大家共勉。

最低要求是WINDOWS5.0,也就是WINDOWS2000,9X系列可以无视掉。最高判断出WINDOWS7。

string info = Request.UserAgent.ToString();

if (info.IndexOf("Windows NT 5") > 0)
{
     if (info.IndexOf("NET CLR 2") > 0 || info.IndexOf("NET CLR 3") > 0 || info.IndexOf("NET CLR 4") > 0)
    {
        //绝对支持CLR2.0
    }
    else
   {
       //操作系统可能尚未安装.Netframework 2.0

       //看情况给出用户手动选择项,有可能用户已经安装.Netframework 2.0,但是此时他们正在使用的浏览器没有发送CLR版本信息
    }
}
else if (info.IndexOf("Windows NT 6") > 0 || info.IndexOf("Windows NT 7") > 0)
{
       //绝对支持CLR2.0
}
else
{
       //不支持CLR的可能性很大,很有可能不属于WINDOWS系统,可以视为不支持
}

这里又关系到一个问题,为什么我们要通过操作系统类型来判断呢?答案是我们只能通过操作系统类型来判断。因为客户端的浏览器并不保证一定会向服务器发送.NET版本信息,即使是安装了.NET的机器,如果使用Chrome或者早期版本的Firefox或者Opera,请看下面的一段UserAgent:
Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.3.154.9 Safari/525.19

这是一段来自Chrome的UserAgent,实际上已经安装有.Net,但是它并没有标明.Net的版本号,这就说明了我们不能依赖IE浏览器的UserAgent 中的类似“.NET CLR 3.0.04506.648”等字段。

mcts

Category

Tag

Archives

  • kvspas
  • Powered by Google App Engine