FIX: Windows-並存執行不支援為 Visual Basic 6.0 ActiveX 控制項

文章翻譯 文章翻譯
文章編號: 828629 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

徵狀

與 Microsoft Windows XP 和更新版本,您可以在由並存 (SxS) 模式中執行 Microsoft 元件物件模型 (COM) DLL 模組。與 SxS 為不同版本的共存在相同的電腦環境,而不會發生衝突的 COM DLL。藉由使用.manifest 指定如何程式可能會繫結至特定的 COM DLL 的檔案,就會發生這個問題。Microsoft Visual Basic 6.0 ActiveX 控制項是基本上是 COM DLL 模組具有.ocx 副檔名。如果嘗試設定 SxS 操作這些模組在 Windows XP 中您會收到下列錯誤訊息:

執行階段錯誤 '336' 元件未正確註冊。

發生的原因

Windows 和 Visual Basic 執行階段不支援設定 SxS 執行的 Visual Basic 6.0 ActiveX 控制項,就會發生這個問題。

解決方案

若要完全解決這個問題,您必須有下列兩個動作:
  • 隨附於 Visual Basic 6 服務封包 6 (SP6) Visual Basic 執行階段版本
  • Windows XP Service Pack 2 (SP2)
如需有關如何取得最新的 Visual Basic 執行階段的詳細資訊,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
290887VBRun60sp6.exe 安裝 Visual Basic 6.0 SP6 執行階段檔案
若要取得 Windows XP SP2,請造訪下列 Microsoft 知識庫 」 網站:
http://support.microsoft.com/default.aspx?scid=fh;EN-US;windowsxpsp2
如果您無法安裝 Windows XP SP2,您可以為一個 Hotfix 來取得 Windows XP 修正程式。如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
843524FIX: Visual Basic 6.0 ActiveX 控制項的並列於 COM DLL 模組資訊清單會覆寫由 Windows XP 中登錄,

其他相關資訊

若要以便此修正程式您必須將欄位新增到.manifest 檔案。The following is a sample .manifest file:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
	<assemblyIdentity type="win32" name="control.ocx" version="1.0.0.0" processorArchitecture="x86"/>
	<file name="control.ocx">
		<comClass description="Sub control" clsid="{76548630-0CC8-48E4-B471-A9001865AE65}" 
			miscStatus="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst"
			progid="Control.TextBox" threadingModel="Apartment"
			tlbid="{8A1ADF05-8164-4D5B-9267-FA74E601D826}"/>
		<typelib tlbid="{8A1ADF05-8164-4D5B-9267-FA74E601D826}" version="1.0" helpdir=""/>
	</file>
</assembly>
請注意已加入 miscStatus 屬性。現在五個新的屬性都可在 組件 項目上或代表各種可用的 DVASPECT 值 comClass 項目上:
摺疊此表格展開此表格
屬性附註
miscStatus當您傳遞 dwAspect 引數的 0 OleRegGetMiscStatus API 來取得預設狀態旗標
miscStatusIcon對應到 DVASPECT_ICON
miscStatusThumbnail對應到 DVASPECT_THUMBNAIL
miscStatusDocPrint對應到 DVASPECT_CONTENT
miscStatusContent對應到 DVASPECT_CONTENT
各方面的下列組的旗標可指定為以逗點分隔的清單。不要使用空格字元 ("") 但旗標可以是混合大小寫。這些項目是取自 OLEMISC 旗標列舉型別。
摺疊此表格展開此表格
Recomposeonresize Onlyiconic Insertnotreplace
靜態CantlinkinsideCanlinkbyole1
IslinkobjectInsideoutActivatewhenvisible
RenderingisdeviceindependentInvisibleatruntimeAlwaysrun
ActslikebuttonActslikelabelNouiactivate
alignableSimpleframeSetclientsitefirst
ImemodeIgnoreactivatewhenvisibleWantstomenumerge
Supportsmultilevelundo
請注意也必須使用 tlbid 屬性在 組件 項目或 comClass 元素中,表示何種型別程式庫 COM 類別來自執行階段正確解析。

狀況說明

Microsoft 已確認<適用於>一節所列之 Microsoft 產品確實有此問題。

屬性

文章編號: 828629 - 上次校閱: 2005年10月25日 - 版次: 1.1
這篇文章中的資訊適用於:
  • Microsoft Visual Basic 6.0 Enterprise Edition Service Pack 5
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic Professional Edition for Windows 6.0 SP5
  • Microsoft Windows XP Professional SP1
  • Microsoft Windows XP Professional SP1a
關鍵字:?
kbmt kbhotfixserver kbqfe kbqfe kbwinxppresp2fix kbfix kbbug KB828629 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:828629
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com