編碼的世界 / 優質文選 / 財富

關於WIN7下VB6中Microsoft Windows Common Controls 6.0 (SP6)加載提示“對象庫未注冊”的一種辦法


2021年7月26日
-   

    如題,安裝了某些軟件可能影響注冊表的內容,從而導致某些控件不能被VB6開發環境加載,而這些控件是的確存在的。無論怎麼注冊都無濟於事。百度“vb6 對象庫未注冊”可以搜索到很多辦法,但親測後發現,沒一個管用的。諸如卸載office再裝office、反注冊後替換合適版本的mscomctl.ocx,最後只剩下重裝系統後首先裝VB這樣的辦法了。
    經過兩天的探索,覺得注冊表的嫌疑是最大的。可是為什麼重裝VB都不能修正這個問題?不管了,既然問題在於注冊表,就修改注冊表!從同樣環境,不存在上述問題的機器上導出注冊表與現有的比對,終於發現問題:
    所有{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}下的一個項2.0下面,少了一個鍵值:PrimaryInteropAssemblyName,其值為mscomctl, Version=10.0.4504.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
    之後還有一個地方,HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftVisual Basic6.0下面,看是否有{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0這樣的子項,若沒有,添加一個。其默認值為C:WindowsSysWow64MSCOMCTL.oca
    修改後,打開VB6,發現一切正常!

熱門文章