文章編號: 835428 - 上次校閱: 2006年4月7日 - 版次: 2.1

MFC 7.1 無法登錄某些元件在 MFC 應用程式中如果您指定 NULL external_name 參數

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
全部展開 | 全部摺疊
如果您使用 Microsoft Visual Studio.NET 2003,開發 Microsoft 基礎類別 (MFC) 應用程式且應用程式包含 OLE 元件,所有元件可能未註冊成功如果其中一個元件具有 PROGID NULL 的參數。因為元件資訊可能不會出現在登錄中,執行應用程式時,這個問題可能會造成未預期的行為。

發生的原因

當 IMPLEMENT_OLECREATE 巨集註冊元件 MFC 應用程式中如果為 external_name 參數傳遞的值是 NULL UpdateRegistry 函式在下一個呼叫會傳回 將 FALSEUpdateRegistry 函式不會更新在登錄中的 [元件] 資訊。這種行為會造成 MFC 中止註冊程序。因此,應用程式中其他元件的相關資訊不會更新登錄中。

解決方案

支援的 Hotfix 現在可以從 Microsoft,但它只用來修正本文所述的問題。僅適用於發生此特定問題的系統。此 Hotfix 可能會接受其他測試。因此,如果您不會嚴重影響這個問題,我們建議您等候下一個的 Visual Studio.NET 2003 Service Pack 包含此 Hotfix。

如果要立即解決這個問題,洽詢 Microsoft 技術支援部以取得該 Hotfix。如需 Microsoft 產品支援服務電話號碼及支援成本的相關資訊的完整清單,請造訪下列 Microsoft 網站]:
http://support.microsoft.com/contactus/?ws=support (http://support.microsoft.com/contactus/?ws=support)
附註 在特殊情況下通常會因支援電話所產生的費用可能就不收取如果 Microsoft 支援人員認為某特定更新程式可以解決您的問題。平常的支援成本將會套用到其他支援問題是所做不限定特定有問題的更新程式。

此 Hotfix 的英文版具有檔案屬性 (或更新) 中如下表所列。這些檔案的日期和時間為 Coordinated Universal Time (UTC)。當您檢視檔案資訊時,會將它轉換為當地時間。若要到 UTC 與當地時間差異使用 [中日期] 和 [時間] 工具,在 [控制台] 中的 [時區] 索引標籤]。
   Date         Time   Version      Size       File name
   --------------------------------------------------------
   28-Jan-2004  06:21  7.10.4027.0  1,060,864  Mfc71.dll
   28-Jan-2004  05:38  7.10.4027.0     40,960  Mfc71chs.dll
   28-Jan-2004  05:38  7.10.4027.0     45,056  Mfc71cht.dll
   28-Jan-2004  05:28  7.10.4027.0  2,183,168  Mfc71d.dll
   28-Jan-2004  05:38  7.10.4027.0     65,536  Mfc71deu.dll
   28-Jan-2004  05:38  7.10.4027.0     57,344  Mfc71enu.dll
   28-Jan-2004  05:38  7.10.4027.0     61,440  Mfc71esp.dll
   28-Jan-2004  05:38  7.10.4027.0     61,440  Mfc71fra.dll
   28-Jan-2004  05:38  7.10.4027.0     61,440  Mfc71ita.dll
   28-Jan-2004  05:38  7.10.4027.0     49,152  Mfc71jpn.dll
   28-Jan-2004  05:38  7.10.4027.0     49,152  Mfc71kor.dll
   28-Jan-2004  06:07  7.10.4027.0  1,048,064  Mfc71u.dll
   28-Jan-2004  05:30  7.10.4027.0  2,178,048  Mfc71ud.dll

其他可行方案

若要解決這個問題,指定非 NULL 值 external_name 參數傳遞給 IMPLEMENT_OLECREATE 巨集,或指定非-NULL PROGID 參數可以用來註冊您的元件。

狀況說明

Microsoft 已確認這是本文 < 適用於 > 一節中所列的 Microsoft 產品中的問題。

其他相關資訊

如其他有關用來描述 Microsoft 產品更新的用語,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
824684? (http://support.microsoft.com/kb/824684/ ) 用來描述 Microsoft 軟體更新標準術語的說明

這篇文章中的資訊適用於:
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Academic Edition
關鍵字:?
kbmt kbqfe kbhotfixserver kbvsnet2003presp1fix kbfix kbbug KB835428 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:835428? (http://support.microsoft.com/kb/835428/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。