2014-10-02 86 views
0

我有一个屏幕刮伤浏览器的网页应用程序。本地计算机的注册表中显示错误的IE版本

为了做到这一点,我需要获得浏览器的版本。

 public string GetIEVersion() 
     { 
      string data = ""; 
      string sKey; 
      RegistryKey dKey; 

      sKey = "SOFTWARE\\Microsoft\\Internet Explorer"; 
      dKey = Registry.LocalMachine.OpenSubKey(sKey); 
      if (dKey != null) 
      { 
       data = dKey.GetValue("Version").ToString(); 
      } 

      return data; 
     } 

这工作正常。但是,我注意到我的机器正在返回不正确的IE版本。我的注册表是搞砸了还是IE版本化搞砸了?我不希望分发的应用程序找错了IE版本...

enter image description here

+0

尝试svcVersion。 – 2014-10-02 15:22:55

回答

1

出于兼容性考虑,微软在Internet Explorer 10移动版本的数据,稍后尝试和工作的人多年来投入网站的各种怪癖周围检测到IE网页中并提供特定的内容。

版本关键的主设备号已被冻结在9,与存储在未成年人的实际版本,建立和修订号。 实际版本可以在其他新密钥中找到。

我有Internet Explorer 11我的机器上,并在注册表值我有【

Version: 9.11.9600.17239 
W2kVersion: 9.11.9600.17239 
svcUpdateVersion: 11.0.11 
svcVersion: 11.0.9600.17239 

正如你可以看到,9被冻结前两个,和数字的其他部分相匹配的IE 11在svc前缀注册表值。

为您的代码最好的解决方法是看svcVersion如果它存在,并回落到如果它不存在。

2

你可以试试new System.Windows.Forms.WebBrowser().Version。我想微软并没有答应他们在IE注册表中放置什么,所以这是不可靠的。我also read,它的兼容性的原因,所以,在注册表中的版本不走高于9,但它看起来像BS我......如此看来IE10是9.10.xxx,IE11是9.11.xxx等,但谁知道IE12将放在那里......

相关问题