从Internet Explorer中检测.NET Framework版本和修订版本

4

我知道我们可以从用户代理字符串中检测主要版本和SP版本。

然而,我还需要区分修订版本,也就是说:

2.0 RTM (x86)   2.0.50727.42  
2.0 RTM (Vista) 2.0.50727.312  
2.0 (KB928365)  2.0.50727.832  

这里的技术和我不同,它们在用户代理中报告如下: Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 3.5.30707; InfoPath.1; el-GR)

(http://en.wikipedia.org/wiki/List_of_.NET_Framework_versions)

任何方法都可以接受(Silverlight、Flash、Java等),只要它不需要用户交互

更新:已经接近成功了...签名的.NET ActiveX在中等安全级别(即Intranet中)可以工作,但在Internet设置中无法工作。

在IE中托管Windows Forms似乎以相同的方式工作。如果我能找到如何指定不需要高信任来工作的方法就好了...

2个回答

0

我相信确定补丁级别的唯一两种方法是检查文件版本本身或读取注册表键。

无论哪种方式,从我的有限研究(2分钟)来看,这似乎很难做到。不过,你可能可以编写一个ActiveX控件来实现这一点。


是的,一个简单的COM包装的.NET程序集的ActiveX就可以解决问题。但是询问用户启动AX并设置cookie的统计计数器在我看来有些过度了 :) - wizzard0
1
@wizzard0:顺便说一句,作为用户,我不确定我是否希望我访问的网站知道我的补丁级别。这些信息可能会被远程服务器用来定制攻击代码。 - NotMe
嗯,我已经制作了一个签名的ActiveX,虽然它能够完成任务,但是第一次访问页面时仍会弹出警告框... :( - wizzard0

0

在.NET中创建浏览器应用程序很简单。可能会有一些安全设置的问题,但既然你说任何方法都可以接受,这个也应该可行。从那里开始,您就拥有了一个完全嵌入浏览器的.NET应用程序。只需像通常一样检测版本即可。

补充:我认为您还可以以某种方式指定您不需要完全信任,这将缓解安全问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接