IE加載activex的水很深啊,說不定什麼問題就導緻加載不了了,今天終于解決了這個頭疼的問題,記錄一下
現象:一開始的時候activex可以正常加載并使用,可是裝了某某activex控件後,我的activex控件可以正常加載,在管理附加元件中顯示正常,已啟動,但就不能運作了,
js加載不上,new ActiveXObject抛出異常
try {
objCard = new ActiveXObject("Uprain.CardAccessorCtrl.1");
}
catch (e) {
alert("調用ActiveX失敗!");
}
重裝系統後試了試,現象還是一樣,應該是某某控件修改了某些ie設定,導緻我的插件不能運作了,
比較系統資料庫後果不其然,原來是某某插件在系統資料庫這個位置
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
增加了這個鍵值對
TabProcGrowth 值為0
把這個鍵值對删掉我的控件就可以運作了
到底為什麼這個鍵值對會對我的控件産生影響不得而知,這個鍵值對的作用如下:
系統資料庫項 TabProcGrowth 負責定義 IE 浏覽器啟動 IEXPLORE.EXE 程序的方式,随着此系統資料庫項的值不同,IE 浏覽器将采用不同的政策運作 IEXPLORE.EXE 程序。如果 TabProcGrowth 不存在,或者即使存在但沒有設定任何值,那麼 IE 浏覽器将繼續采用分離 IEXPLORE.EXE 程序、直至達到可用記憶體與空閑系統資源的上限為止的預設設定。
如果您建立 TabProcGrowth 時将類型設定為 DWORD 值,那麼您可以按照如下的定義自行設定 TabProcGrowth 的值:
如果TabProcGrowth 的值被設定為 0,IE 浏覽器将不再為主視窗與頁籤分離 IEXPLORE.EXE 程序,每一個 IE 主視窗以及其中的所有頁籤都将合并共用一個 IEXPLORE.EXE 程序。
例如,假設您啟動了兩個 IE 主視窗,一個主視窗擁有四個頁籤、一個主視窗擁有兩個頁籤,Windows 将隻啟動兩個 IEXPLORE.EXE 程序對應這兩個 IE 主視窗,而不是啟動八個 IEXPLORE.EXE 程序對應兩個主視窗及六個頁籤。注意,IE 主視窗的程序不能合并,兩個 IE 主視窗無法合并為一個 IEXPLORE.EXE 程序。
而且,在 TabProcGrowth 的值被設定為 0 後,Windows 7/Server 2008(R2)/Vista 将無法以保護模式運作 IE 浏覽器,因為 IE 保護模式隻能在 IEXPLORE.EXE 程序分離模式中生效。
如果TabProcGrowth 的值被設定為 1,IE 浏覽器将為每個主視窗使用一個分離的 IEXPLORE.EXE 程序,為每個主視窗中的所有頁籤使用一個分離的IEXPLORE.EXE 程序,但不會為每個單獨的頁籤分離 IEXPLORE.EXE 程序。
例如,假設您啟動了兩個 IE 主視窗,一個主視窗擁有四個頁籤、一個主視窗擁有兩個頁籤,Windows 将啟動四個 IEXPLORE.EXE 程序。其中兩個 IEXPLORE.EXE 程序對應兩個 IE 主視窗,另兩個 IEXPLORE.EXE 程序分别對應第一主視窗中的四個頁籤與第二主視窗中的兩個頁籤。
在TabProcGrowth 的值被設定為 1 後,Windows7/Server 2008(R2)/Vista 可以以保護模式運作 IE 浏覽器。
如果TabProcGrowth 的值被設定為任意大于 1 的整數數字(例如 5),IE 浏覽器将像預設設定一樣為所有的主視窗與頁籤分離 IEXPLORE.EXE 程序,但 IEXPLORE.EXE 程序的總數将不會超過 TabProcGrowth 指定的整數數字。在 IEXPLORE.EXE 程序的數量達到上限後,如果您繼續建立頁籤,那麼所有的頁籤将按照平均配置設定的原則共用已經啟用的 IEXPLORE.EXE 程序。
在TabProcGrowth 的值被設定為任意大于 1 的整數數字後,Windows 7/Server 2008(R2)/Vista 可以以保護模式運作 IE 浏覽器。
如果您建立 TabProcGrowth 時将類型設定為字元串值,那麼您還可以按照如下的定義自行設定TabProcGrowth 的值:
如果 TabProcGrowth 的值被設定為 small(字元串值),Windows 同時運作的 IEXPLORE.EXE 程序數量将被限制為 5 個。而且,必須至少打開 15 個頁籤才會出現第三個 IEXPLORE.EXE 程序。
如果TabProcGrowth 的值被設定為 medium(字元串值),Windows 同時運作的 IEXPLORE.EXE 程序數量将被限制為 9 個。而且,必須至少打開 17 個頁籤才會出現第五個 IEXPLORE.EXE 程序。
如果TabProcGrowth 的值被設定為 large(字元串值),Windows 同時運作的 IEXPLORE.EXE 程序數量将被限制為 16 個。而且,必須至少打開 21 個頁籤才出現第九個 IEXPLORE.EXE 程序。
是以,如果您的計算機可用記憶體與空閑系統資源緊缺,建議将字元串值類型的 TabProcGrowth 系統資料庫項的值設定為 small 或 medium。