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用戶,用該賬戶登錄後,打開註冊表做相應的修改即可。