2014-10-02 65 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將放在那裏......

相關問題