安裝了M$十二月的補(bǔ)丁后,可能影響使用了ActiveX的B/S應(yīng)用,存在兩種可能的原因。
原因一:由于注冊(cè)表項(xiàng)丟失。
奇怪,更新補(bǔ)丁會(huì)導(dǎo)致注冊(cè)表項(xiàng)丟失?奇怪的M$
解決一:
更新注冊(cè)表
原因二:SFI
在IE運(yùn)行COM組件之前,安全更新MS05-052引入了一些附加檢查。其目的是阻止未被設(shè)計(jì)為可在IE中安全實(shí)例化的控件被實(shí)例化。 其中一項(xiàng)是在一個(gè)COM對(duì)象可以在IE中運(yùn)行之前,先檢查在Internet區(qū)中的ActiveX控件是否存在IObjectSafety 接口。
解決二:
關(guān)于SFI和UFI,可以參考俺另一篇BLOG。
更多信息,可查詢MS知識(shí)庫(kù)。
原因一:由于注冊(cè)表項(xiàng)丟失。
奇怪,更新補(bǔ)丁會(huì)導(dǎo)致注冊(cè)表項(xiàng)丟失?奇怪的M$
解決一:
更新注冊(cè)表
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{0000031A-0000-0000-C000-000000000046}]
@="ClassMoniker"
[HKEY_CLASSES_ROOT\CLSID\{0000031A-0000-0000-C000-000000000046}\InprocServer32]
@="ole32.dll"
[HKEY_CLASSES_ROOT\CLSID\{0000031A-0000-0000-C000-000000000046}\ProgID]
@="clsid"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\CLSID]
@="{0000031A-0000-0000-C000-000000000046}"
[HKEY_CLASSES_ROOT\CLSID\{0000031A-0000-0000-C000-000000000046}]
@="ClassMoniker"
[HKEY_CLASSES_ROOT\CLSID\{0000031A-0000-0000-C000-000000000046}\InprocServer32]
@="ole32.dll"
[HKEY_CLASSES_ROOT\CLSID\{0000031A-0000-0000-C000-000000000046}\ProgID]
@="clsid"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\CLSID]
@="{0000031A-0000-0000-C000-000000000046}"
原因二:SFI
在IE運(yùn)行COM組件之前,安全更新MS05-052引入了一些附加檢查。其目的是阻止未被設(shè)計(jì)為可在IE中安全實(shí)例化的控件被實(shí)例化。 其中一項(xiàng)是在一個(gè)COM對(duì)象可以在IE中運(yùn)行之前,先檢查在Internet區(qū)中的ActiveX控件是否存在IObjectSafety 接口。
解決二:
- 重新編譯ActiveX組件(嘿嘿)
- 移到安全區(qū)
- 修改注冊(cè)表(呵呵,M$總是支持這種方式來(lái)繞開(kāi)安全設(shè)置)
在注冊(cè)表中設(shè)置 ActiveX 兼容性值
可以在注冊(cè)表中設(shè)置 ActiveX 兼容性標(biāo)志。為此,請(qǐng)按照下列步驟操作:
1. 單擊“開(kāi)始”,單擊“運(yùn)行”,鍵入 Regedit.exe,然后單擊“確定”。
2. 找到以下注冊(cè)表子項(xiàng):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility
3. 右鍵單擊“ActiveX Compatibility”,指向“新建”,單擊“項(xiàng)”,鍵入 ActiveX 控件的 CLSID,然后按 Enter。
4. 右鍵單擊您在步驟 3 中創(chuàng)建的項(xiàng),指向“新建”,然后單擊“DWORD 值”。
5. 鍵入 Compatibility Flags,然后按 Enter。
6. 右鍵單擊“Compatibility Flags”,然后單擊“修改”。
7. 在“數(shù)值數(shù)據(jù)”框中,鍵入 00800000,然后單擊“確定”。
8. 退出注冊(cè)表編輯器。
可以在注冊(cè)表中設(shè)置 ActiveX 兼容性標(biāo)志。為此,請(qǐng)按照下列步驟操作:
1. 單擊“開(kāi)始”,單擊“運(yùn)行”,鍵入 Regedit.exe,然后單擊“確定”。
2. 找到以下注冊(cè)表子項(xiàng):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility
3. 右鍵單擊“ActiveX Compatibility”,指向“新建”,單擊“項(xiàng)”,鍵入 ActiveX 控件的 CLSID,然后按 Enter。
4. 右鍵單擊您在步驟 3 中創(chuàng)建的項(xiàng),指向“新建”,然后單擊“DWORD 值”。
5. 鍵入 Compatibility Flags,然后按 Enter。
6. 右鍵單擊“Compatibility Flags”,然后單擊“修改”。
7. 在“數(shù)值數(shù)據(jù)”框中,鍵入 00800000,然后單擊“確定”。
8. 退出注冊(cè)表編輯器。
關(guān)于SFI和UFI,可以參考俺另一篇BLOG。
更多信息,可查詢MS知識(shí)庫(kù)。