WIN7 環境裏PB裏面添加控件OLE,選擇insertcontrol選項卡就會報錯自動關閉解決辦法

WIN7 環境裏PB裏面添加控件OLE,選擇insertcontrol選項卡就會報錯自動關閉解決辦法

(說明:在網上搜了一些辦法,都沒解決,一是每個電腦不同,再就是權限不同,總結個人電腦win7下不同管理員賬戶登陸時的解決方案,本人電腦上PB9和PB10兩個都已安裝)

試試這個方法:

原理分析

當我們點擊OLE控件中的insert control時,pb會搜索那些控件可用,並且在PB中顯示出來。

PB搜索控件的位置爲:註冊表中的"HKEY_CLASSES_ROOT\CLSID"下的子項(爲DLL、OCX文件註冊信息)

搜索到保存的位置在:"HKEY_CURRENT_USER\Software\Sybase\PowerBuilder\9.0\OLEObject Bitmaps\..."

也就是說pb搜索CLSID的子項保存在OLE Object Bitmaps中,當搜索CLSID中的DLL或OCX控件和PB有衝突時,CLSID後面的DLL、OCX控件就不會保存在OLE Object Bitmaps中,也就是說OLE Object Bitmaps沒有完全加載所有控件,有的控件衝突導致中斷使PB報錯,找出衝突的控件是關鍵。

解決辦法:

(一)運行註冊表(命令爲regedit)

(二)在註冊表中找到“HKEY_CLASSES_ROOT\CLSID”並導出保存爲CLSID.REG,並且用記事本打開



(三)在註冊表中找到"HKEY_CURRENT_USER\Software\Sybase\PowerBuilder\9.0\OLEObject Bitmaps\..."中的最後一個子項,比如爲“0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC”,證明這個子項前的控件都是正確的。

(四)在用記事本打開CLSID.REG,並且搜索OLE ObjectBitmaps最後一個子項比如爲:“0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC”,一直往下查找,直到提示查找不到爲止,到此爲止,記事本以上的控件都是正確的。然後用關鍵字“ToolboxBitmap32”再往下搜索,找到第一個帶“ToolboxBitmap32”和“control”關鍵字後,如圖

證明這個出問題的控件爲”C:\windows\system32\aliedit\aliedit.dll”然後在命令提示符中輸入

進行對出問題的控件反註冊,如果提示反註冊成功,打開PB的OLE控件看是否報錯,如果還報錯返回步驟(三)循環查找。如果提示找不到路徑,則在“HKEY_CLASSES_ROOT\CLSID”把對應的整個子項刪除。一般只會有一兩個控件有衝突,不用擔心工作量會很大

也有一種情況,就是在記事本中找到的內容如下:

我們無法找到是哪個dll,這時去註冊表CLSID 下面找到項{a41a4187-5a86-4e26-b40a-856f9035d9cb},展開,選擇toolboxbitmap32,在右側的窗口中雙擊那一行數據,將數值數據後面加上“,1”,原來應該是沒有“,1”的,點擊確定。打開PB的OLE控件看是否報錯,如果還報錯返回步驟(三)循環查找。


注:在win7系統下,系統默認的登陸賬戶可能是不超級管理員,無法修改註冊表的值。會出現如下錯誤:

右擊註冊表中的項,選擇權限,將用戶賦上權限即可,如果賦值權限失敗,則需要以超級管理員的身份登錄,登錄方法如下:

1、打開組策略(命令gpedit.msc)

2、選擇計算機配置-Windows設置-安全設置-本地策略-安全選項,找到賬戶:管理員賬戶狀態:改爲啓用狀態。

3、在開始菜單裏選擇切換用戶,這時在切換用戶頁面會出現administrator用戶,用該賬戶登錄後,打開註冊表做相應的修改即可。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章