文章編號: 269383 - 上次校閱: 2004年3月25日 - 版次: 2.0

當顯示 VB/VBA 參考 PRB: '存取系統登錄時發生錯誤' 訊息

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

在此頁中

全部展開 | 全部摺疊

徵狀

當您存取 Visual Basic 整合式的開發環境 (IDE) 或應用程式 (VBA) 啟用應用程式任何 Visual Basic 中的 [參考] 對話方塊時,您會收到下列錯誤:
存取系統登錄時發生錯誤
而且,當從 REGEDT32.exe 存取,某些登錄機碼會是暗灰色並且無法存取。例如:
HKEY_CLASS_ROOT\TypeLib\{...}
				
使用這些登錄機碼可能遭遇其他問題包括:
  • 您無法刪除這些機碼不甚至從本機系統管理員帳戶。
  • 您無法分派或檢視的權限。
  • 無法取得擁有權的機碼。

發生的原因

這個問題的原因是一個完整/清除水晶報告 8.0.0.371 」 的安裝。

商務物件有記載這個問題的水晶報表 8.0.0.371 他們自己的知識庫文件中:
'Error Accessing the System Registry' message after installing Crystal Reports 8 (http://support.businessobjects.com/library/kbase/articles/c2008211.asp)
根據商務物件以發生此問題不再水晶報表 8.0.0.441 或更高。

解決方案

警告: 如果您未正確使用登錄編輯程式可能會導致嚴重的問題,甚至必須重新安裝作業系統。Microsoft 不保證您可以解決因不當使用 「 登錄編輯器 」 的問題。使用 「 登錄編輯程式 」,請自行負擔相關的風險。

HKEY_CLASSES_ROOT 是動態的並建立在啟動時。HKEY_LOCAL_MACHINE\Software\Classes 金鑰讀取到記憶體,且可以當作 HKEY_CLASSES_ROOT 加以存取。如果索引鍵加入 HKLM\Software\Classes 它是立即複寫到 HKCR。

若要更正此問題的步驟

首先您必須找出哪一個登錄機碼或機碼會受到影響。這可以兩種方式完成:
  1. 使用 REGEDT32.exe HKEY_CLASSES_ROOT\TypeLib 和 HKEY_CLASSES_ROOT\CLSID 中以灰色顯示的索引鍵的掃描。
  2. 使用從 www.sysinternals.com RegMon 公用程式。對於 Visual Basic 執行篩選的處理程序,然後再試存取 Visual Basic 中的 [參考] 對話方塊。此錯誤時切換至 RegMon],然後記下的最後一個機碼的已成功地讀取或寫入。(這些應該從 HKEY_CLASSES_ROOT\TypeLib 或 HKEY_CLASSES_ROOT\CLSID)。
以下列方式],然後可以解決權限問題:
  1. 載入 REGEDT32 並找出機碼,從上述的步驟 1,以灰色顯示] 或 [步驟 2 中記下的金鑰。(注意: 如果您使用步驟 2,一旦找出機碼,查看索引鍵或立即跟隨在登錄中的子機碼。如果您不了適當的權限來存取機碼,它就不已甚至記錄透過 RegMon 公用程式且,為等您在步驟 2 中記下此項目會在上次成功讀取/寫入。因此,其後所導致發生錯誤。
  2. 在 [安全性] 功能表上提供適當的權限至機碼,讓您,和 Visual Basic 可以存取它:
    • 系統管理員-完全控制
    • 每一個人-讀取
    • 系統-完整
    • 使用者-讀取
    • 修改使用者清單套件至您的需求。

  3. 有時候 REGEDT32 不能夠存取機碼,它提供錯誤訊息指出安全性帳戶資訊無法擷取或找到。您可以透過下列方式修正此問題:
    1. 在 [控制台] 上連按兩下 [服務] 圖示。
    2. 請確認 工作排程器 」 在執行中,而且如果沒有啟動它。
    3. 開啟命令提示字元。(DOS 模式)(注意: 視窗的標題寫著 [命令提示字元)
    4. 輸入下列命令來排定新的命令提示字元: AT 13: 10/互動式 cmd.exe

    5. 您要 cmd.exe (命令提示字元) 來執行任何的時間變更 13: 10:,例如一兩分鐘從目前的時間。
    6. 請等到這個新的命令提示字元啟動。(注意: 視窗的標題是類似於 C:\Winnt\System32\MSTask.exe)如果無法啟動命令提示字元,請參閱知識庫文章 193852? (http://support.microsoft.com/kb/193852/EN-US/ ) 「 工作排程器可能失敗來執行工作時排定"

      因為 SYSTEM 帳戶下執行工作排程器,系統安全性內容下執行建立新的命令提示字元。
    7. 從新命令提示字元鍵入下列,然後按下輸入: REGEDT32.EXE REGEDT32 由於您從 SYSTEM 命令提示字元中啟動這個處理程序也在系統安全性內容下執行。
    8. 重複上述步驟 2,並再重設使用權限。

?考

如其他有關所造成的水晶報表 8.0.0.371 安裝的登錄問題的資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中 「 文件:
268553? (http://support.microsoft.com/kb/268553/EN-US/ ) 如果已安裝水晶報表 8 PRB: Visual Studio 安裝問題
259569? (http://support.microsoft.com/kb/259569/EN-US/ ) PRB: 安裝協力廠商產品線 Win2000 MDAC 登錄設定
如需可能的問題,使用 [工作排程器上的詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
193852? (http://support.microsoft.com/kb/193852/EN-US/ ) 工作排程器可能無法執行排定的工作

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