文章編號: 330314 - 上次校閱: 2006年8月14日 - 版次: 1.0

PRB:安裝包含 MSVCRT.dll 檔案的 Microsoft Visual Basic 6.0 應用程式後電腦無法重新啟動

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

徵狀

安裝由封裝暨部署精靈所封裝的 Microsoft Visual Basic 6.0 應用程式後,在啟動電腦時收到下列其中一個錯誤訊息:
  • Microsoft Windows NT 4.0:
    STOP: c000021a {Fatal System Error} (停止:c000021a {嚴重的系統錯誤})
    The Windows Logon Process System process terminated unexpectedly with a status of 0x00000080 (0x00000000 0x00000000).

    The system has been shut down. (Windows 登入程序系統在處理過程中出現 0xc0000005 (0x0000000 0x00000000) 狀態而意外地終止,系統已經關閉。)
  • Microsoft Windows 2000:
    Setup cannot continue because some system files are out of date on your system.Click OK if you would like setup to update these files for you now.You will need to restart Windows before you can run setup again.Click cancel to exit setup without updating system files. (由於您系統中的部分系統檔案已經過期,安裝程式無法繼續。如果您希望安裝程式立刻更新這些檔案,請按一下 [確定]。在再次執行安裝程式前,您必須重新啟動 Windows。按一下 [取消] 離開安裝程式而不更新系統檔案。)
    當 Windows 2000 重新啟動,而您再次執行安裝時,仍然會再次收到錯誤訊息。
  • Microsoft Windows 98:
    The MSVCRT.dll file is linked to missing export NTDLL.dll: RtlGetNTVersionNumbers. (Mvcirt.dll 檔案連結到遺失的匯出 msvcrt.dll:RtlGetNTVersionNumbers。)
    收到這個錯誤後,出現包含下列訊息的 [停止] 對話方塊:
    附加到系統的某個裝置失去作用。

發生的原因

因為安裝套件在電腦上安裝了與作業系統不相容的 MSVCRT.dll 檔案版本,所以您會收到錯誤。這通常是因為 MSVCRT.dll 在相依檔案 (.dep) 中被列為 Visual Basic 應用程式所使用其中一個元件的相依項目,而您在較新的作業系統 (例如 Microsoft Windows XP) 中包含了這個應用程式。

解決方案

系統修復

Windows NT 4.0

如果要修復執行檔案配置表 (FAT) 作業系統的 Windows NT 4.0 作業系統,請將電腦開機到命令提示字元,然後手動將位於 C:\WINNT\System32 資料夾中的 MSVCRT.dll 取代為 Windows NT 4.0 光碟中的檔案,或者使用其他正常執行 Windows NT 4.0 作業系統電腦的檔案版本進行取代。

如果要修復執行 NTFS 檔案系統 (NTFS) 的 Windows NT 4.0 電腦,請使用緊急修復磁片 (ERD) 開機。 如需有關此主題的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
103280? (http://support.microsoft.com/kb/103280/ ) 使用 Windows NT 所建立的緊急修復磁片

Windows 98

如果要修復 Windows 98 作業系統,您必須使用開機磁片將電腦開機到命令提示字元。接下來,手動將位於 C:\Windows\System 資料夾中的 MSVCRT.dll 取代為 Windows 98 光碟中的檔案,或者使用其他正常執行 Windows 98 的電腦檔案版本進行取代。

防止 MSVCRT.dll 的重新散佈

如果要防止未來發生這個問題,請不要使用安裝套件重新散佈 MSVCRT.dll。MSVCRT.dll 位於 Microsoft C 執行階段程式庫中,且 MSVCRT.dll 會隨著作業系統安裝。請僅使用作業系統 Service Pack 更新 MSVCRT.dll。

當您使用封裝暨部署精靈來封裝應用程式時,請在檔案清單中移除 MSVCRT.dll,不要包含到封裝中。或者,如果您有一個已經過組合的安裝套件,而您想要修改安裝套件來防止安裝 MSVCRT.dll,請依照下列步驟執行:
  1. 使用記事本或其他文字編輯器開啟 Setup.lst 檔案。
  2. 檢查 [Bootstrap Files] 區段及 [Setup1 Files] 區段,以確認是否包含 MSVCRT.dll。
  3. 移除 MSVCRT.dll 的 File= 行,然後重新編號區段中的其他文字行。
  4. 儲存檔案。

    下次執行 Setup.exe 時,Setup.exe 將不再嘗試安裝 MSVCRT.dll。

狀況說明

Microsoft 已確認本篇文章開頭所列之 Microsoft 產品確實有上述錯誤。

其他相關資訊

重現問題的步驟

  1. 開啟 Scrrun.dll 的相依檔案。注意下列項目:
    [scrrun.dll]
    Dest=$(WinSysPath)Register=$(DLLSelfRegister)Version=4.0.0.2926
    Uses1=MSVCRT.dllCABFileName=ScrRun.cabCABDefaultURL=http://activex.microsoft.com/controls/vb6CABINFFile=ScrRun.inf
    
    [MSVCRT.dll] Dest=$(WinSysPathSysFile)Uses1=
  2. 在 Visual Basic 6.0 中建立「標準執行檔」專案。
  3. [專案] 功能表上,按一下 [參考]
  4. 按一下 [Microsoft Scripting Runtime] 程式庫,然後按一下 [確定]
  5. 儲存專案,然後建立編譯的 EXE 執行檔。
  6. 使用封裝暨部署精靈來建立使用預設設定的安裝套件。
  7. [Package] 資料夾中,使用記事本開啟 Setup.lst 檔案。
  8. [Setup1 Files] 下,注意下列項目:
    File1=@msvcrt.dll,$(WinSysPathSysFile),,,8/29/02 5:41:08 AM,323072,7.0.2600.1106
    此項目顯示較新版本的 MSVCRT.dll 將隨著安裝套件而重新散佈。此時,如果將這個封裝安裝到執行 Windows 98 作業系統的電腦中,或者將這個封裝安裝到執行 Windows NT 4.0 作業系統的電腦中,您將收到本文<徵狀>一節所提到的其中一個錯誤訊息。如果將這個封裝安裝到執行 Windows 2000 作業系統的電腦中,安裝程式將提示您允許更新系統檔案,然後重新啟動。當 Windows 2000 重新啟動,而您再次執行安裝時,仍然會再次收到錯誤訊息。

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