簡體   English   中英

本地計算機注冊表顯示錯誤的IE版本

[英]Local machine registry shows wrong IE version

我有一個屏幕抓取瀏覽器頁面的應用程序。

為此,我需要獲取瀏覽器的版本。

       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的應用...

在此處輸入圖片說明

您可以嘗試new System.Windows.Forms.WebBrowser().Version 我猜微軟沒有承諾將它們放在IE注冊表中,因此這是不可靠的。 還讀到這是出於兼容性原因,所以注冊表中的版本不會超過9,但對我來說似乎是BS ...所以IE10似乎是9.10.xxx,IE11是9.11.xxx等。但是誰知道IE12會放在那里...

出於兼容性原因,Microsoft在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,其余數字與svc前綴注冊表值中的IE 11匹配。

對於您的代碼,最好的解決方案是查看svcVersion(如果存在),如果不存在,則退回到Version

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM