文章編號: 318597 - 上次校閱: 2006年9月1日 - 版次: 4.1

PRB:當您使用 Visual Studio .NET 中的 Visual Basic 6.0 控制項時,發生錯誤

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
重要 本文包含有關修改登錄的相關資訊。修改登錄之前,請務必將它備份起來,並瞭解如何在發生問題時還原登錄。如需有關如何備份、還原和編輯登錄的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
256986? (http://support.microsoft.com/kb/256986/ ) Microsoft Windows 登錄說明

在此頁中

全部展開 | 全部摺疊

徵狀

當您使用 Visual Studio .NET 中的 Microsoft Visual Basic 6.0 ActiveX 控制項時,可能會發生下列問題:
  • 當您嘗試將隨附於 Visual Basic 6.0 中的 ActiveX 控制項新增至 Visual Studio .NET 表單時,收到下列錯誤訊息:
    您沒有使用此 ActiveX 控制項的授權。
    您可以順利地將控制項新增至工具箱中,但是當您在設計階段新增控制項時,會收到這個錯誤訊息。
  • 如果要將 Visual Basic 6.0 專案升級至 Visual Studio .NET,則當「升級精靈」在表單中進行剖析時,您會收到下列錯誤訊息:
    Visual Basic 升級精靈錯誤
    升級失敗:發生例外狀況:無法載入參考的元件:comdlg32.ocx(1.2.0)
    升級專案前需要先安裝這個元件。建議您在升級之前先安裝 VB6.0 以及所有參考的元件,並確認應用程式可以編譯和執行。
    當您按一下 [確定] 時,「升級精靈」就會關閉,並且轉換程序也會停止。

發生的原因

您必須擁有設計階段的授權,才能使用 Visual Basic 6.0 ActiveX 控制項。之所以發生這些錯誤,是因為系統登錄沒有包含設計階段授權資訊所造成的。當您升級包含 Visual Basic 6.0 ActiveX 控制項的專案,或是嘗試使用 Visual Studio .NET 表單上的 Visual Basic 6.0 ActiveX 控制項時,那些控制項必須安裝在目標系統上,並且經過授權的。

除非 Visual Studio .NET 電腦上安裝了 Visual Basic 6.0 控制項,否則 Visual Studio .NET 不會安裝 Visual Basic 6.0 ActiveX 控制項的授權資訊。如果 Visual Studio .NET 電腦上從沒安裝過 Visual Basic 6.0,可能就會發生這個問題。

在已安裝 Visual Basic 6.0 及 Visual Studio .NET 的電腦上,不會發生這些錯誤,因為 Visual Basic 6.0 會安裝元件並登錄授權。

解決方案

如果要解決這個問題,您必須在升級專案,或在 Visual Studio .NET 表單上使用 Visual Basic 6.0 ActiveX 控制項之前,先在 Visual Studio .NET 電腦上安裝 ActiveX 控制項的 .ocx 檔案。如果要執行這項操作,請使用下列其中一個方法:
  • 在 Visual Studio .NET 電腦上安裝 Visual Basic 6.0。
  • 將授權識別碼新增至登錄中。

方法 1:在 Visual Studio .NET 電腦上安裝 Visual Basic 6.0

與較舊版本的 Visual Basic 不同,當您在相同的系統上安裝 Visual Basic 6.0 及 Visual Studio .NET 時,這兩者之間並不會產生衝突。在許多情況中,Microsoft 會建議您在 Visual Studio .NET 電腦上安裝 Visual Basic 6.0。

如果您的 Visual Studio .NET 電腦可以使用 Visual Basic 6.0,則在您升級至 Visual Studio .NET 之前,可以更輕鬆地變更原始的 Visual Basic 6.0 專案。如需有關如何安裝 Visual Basic 6.0,以及如何將專案從 Visual Basic 6.0 升級至 Visual Studio .NET 的詳細資訊,請參閱<參考>一節。

方法 2:將授權識別碼新增至登錄中

警告 不當使用「登錄編輯程式」可能會導致嚴重的問題,甚至必須重新安裝作業系統。Microsoft 並不保證可以解決您不當使用「登錄編輯程式」所導致的問題。請自行承擔使用「登錄編輯程式」的一切風險。 如果要將 Visual Basic 6.0 控制項的授權識別碼新增至登錄中,請依照下列步驟執行:
  1. 將具有 \Extras\VB6 Controls 資料夾的 Visual Studio .NET 安裝光碟插入 CD-ROM 或 DVD-ROM 光碟機中。下列清單說明光碟中每個產品版本所要使用的光碟:

    Visual Studio .NET 2002 (不是 Microsoft Developer Network [MSDN] 光碟)
    • 所有 Enterprise Edition (企業版) - 光碟 4
    • Professional Edition (商用版) - 光碟 4
    • Standard Edition (標準版) - 光碟 3
    • Academic Edition (校園版) - 光碟 4
    Visual Studio .NET 2003 (不是 MSDN 光碟)
    • 所有 Enterprise Edition (企業版) - 光碟 2
    • Professional Edition (商用版) - 光碟 2
    • Standard Edition (標準版) - 光碟 1
    • Academic Edition (校園版) - 光碟 2
  2. 按一下 [開始],再按一下 [執行]
  3. [執行] 對話方塊中,輸入 regedit,然後按一下 [確定]
  4. [登錄編輯程式] 對話方塊中,按一下 [檔案] 功能表上的 [匯入]
  5. 找出 Visual Studio .NET 安裝光碟上的 \Extras\VB6 Controls 資料夾,選取 VB6Controls.reg 檔案,然後按一下 [開啟]。如此,可以將所有的 Visual Basic 6.0 ActiveX 控制項授權識別碼插入登錄中。

狀況說明

Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述錯誤。

其他相關資訊

.ocx 檔案位於 [Windows] 資料夾的 [SYSTEM32] 子資料夾中。下列清單包含部份 ActiveX 控制項及相對應的檔案名稱:
  • ADO Data Control 6.0 (OLEDB) - Msadodc.ocx
  • Chart Control 6.0 - Mschrt20.ocx
  • Chart Control 6.0 (OLEDB) - Mschrt20.ocx
  • Comm Control 6.0 - Mscomm32.ocx
  • Common Dialog Control 6.0 - Comdlg32.ocx
  • Data Bound Grid Control 5.0(SP3) - Dbgrid32.ocx
  • Data Bound List Controls 6.0 - Dblist32.ocx
  • DataGrid Control 6.0 (OLEDB) - Msdatgrd.ocx
  • DataList Control 6.0 (OLEDB) - Msdatlst.ocx
  • FlexGrid Control 6.0 - Msflxgrd.ocx*
  • Internet Transfer Control 6.0 - Msinet.ocx
  • MAPI Controls 6.0 - Msmapi32.ocx
  • Masked Edit Control 6.0 - Msmask32.ocx
  • Multimedia Control 6.0 - Mci32.ocx
  • RemoteData Control 6.0 - Msrdc20.ocx
  • PictureClip Control 6.0 - Picclp32.ocx
  • Rich TextBox Control 6.0 - Richtx32.ocx
  • SysInfo Control 6.0 - Sysinfo.ocx
  • Windowless Controls 6.0 - Mswless.ocx
  • Windows Common Controls - Comctl32.ocx
  • Windows Common Controls 6.0 - Mscomctl.ocx
  • Windows Common Controls-2 5.0 (SP2) - Comct232.ocx
  • Windows Common Controls-2 6.0 - Mscomct2.ocx
  • Windows Common Controls-3 6.0 - Comct332.ocx
  • Winsock Control 6.0 - Mswinsck.ocx
* 在 Visual Studio .NET 2002 中,包含 FlexGrid Control 6.0 授權的 VB6Controls.reg 檔是錯誤的。不過,在 Visual Studio .NET 2003 中,VB6Controls.reg 檔案已經獲得修正。

注意 您必須擁有 Visual Studio 授權合約,才能取得此修正的 Vb6control.reg 檔案。本支援服務是免費的。

如需「Microsoft 技術支援處」完整的電話號碼清單,以及支援費用的相關資訊,請造訪下列 Microsoft 網站:
聯絡 Microsoft - 概觀 (英文)
http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS (http://support.microsoft.com/default.aspx?scid=fh;en-us;cntactms)

重現問題的步驟

當您嘗試將 ActiveX 控制項新增至 Visual Studio .NET 表單時,發生錯誤

  1. 在 A 電腦上安裝 Visual Studio .NET。請先確認這部電腦上從來沒有安裝過 Visual Basic 6.0。
  2. 在 B 電腦上只安裝 Visual Basic 6.0。
  3. 將 B 電腦上 [SYSTEM32] 資料夾的 Visual Basic .ocx 檔案複製到 A 電腦的 [SYSTEM32] 資料夾中。
  4. 在 A 電腦上,啟動 Visual Studio .NET,然後在 Visual Basic .NET 中建立新的 Windows 應用程式專案。
  5. 在工具箱中按一下滑鼠右鍵,然後按一下 [自訂工具箱]
  6. [COM 元件] 索引標籤上,按一下 [瀏覽]
  7. 選取您在步驟 3 中所複製的 .ocx 檔案,然後按一下 [開啟]。請注意,清單中已經新增了控制項,並且也選取了控制項的核取方塊。按一下 [確定]
  8. 將 ActiveX 控制項從工具箱拖曳至表單中。您收到下列錯誤訊息:
    您沒有使用此 ActiveX 控制項的授權。

升級精靈錯誤

  1. 請在從來沒有安裝過 Visual Basic 6.0 的電腦上安裝 Visual Studio .NET。
  2. 啟動 Visual Studio .NET。
  3. [檔案] 功能表上,按一下 [開啟舊檔]
  4. 選取表單上含有 ActiveX 控制項的 Visual Basic 6.0 專案,然後按一下 [確定]。如此,就會啟動「升級精靈」。
  5. 完成「升級精靈」中的步驟。您收到下列錯誤訊息:
    Visual Basic 升級精靈錯誤

    升級失敗:發生例外狀況:無法載入參考的元件:comdlg32.ocx(1.2.0)
    升級專案前需要先安裝這個元件。建議您在升級之前先安裝 VB6.0 以及所有參考的元件,並確認應用程式可以編譯和執行。
  6. 按一下錯誤訊息對話方塊中的 [確定]。請注意,「升級精靈」就會結束。

?考

如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
311324? (http://support.microsoft.com/kb/311324/ ) INFO:將 Visual Basic .NET 與 Visual Basic 6.0 安裝在同一部電腦上以便替專案升級

這篇文章中的資訊適用於:
  • Microsoft Visual Studio .NET 2002 Professional Edition
  • Microsoft Visual Studio .NET 2002 Academic Edition
  • Microsoft Visual Studio .NET 2002 Enterprise Architect
  • Microsoft Visual Studio .NET 2002 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Academic Edition
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 專業版
關鍵字:?
kbtshoot kberrmsg kbprb KB318597
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。