0x80040112 : 無使用此類別的授權許可
出自VFP Wiki
0x80040112 : 無使用此類別的授權許可
的原始碼
跳轉到:
導航
,
搜尋
根據以下的原因,您並無權限去做編輯這個頁面:
你所請求執行的操作被禁止。
你可以檢視並複製本頁面的原始碼。
[[category:OLE/COM/ActiveX相關問題]] ====說明==== 當要使用VFP 提供的 ActiveX 元件時,出現錯誤訊息: *OLE錯誤程式碼0x80040112:無使用此類別的授權許可 或 *0x80040112 : Class is not licensed for use ====來源==== *http://fox.hanyu.com.tw/View.aspx?fbId=1&Id=14926 ====提供者==== *roror ====如何解決==== 這是一個VFP6.0的bug,請參閱:http://support.microsoft.com/default.aspx?scid=kb;en-us;192693 參考: http://zzzevazzz.blogchina.com/ 當你下載並註冊mswinsck.ocx,然後嘗試那些代碼時,卻會得到一個"類別未授權使用(Class is not licensed for use)"錯誤,錯誤號0x80040112。那些代碼的作者似乎都以為MSWinsock和一般的控件一樣,只要用regsvr32註冊就能正常使用了,沒有實際測試它的可移植性。而轉貼文章的人,更不會關心內容是否可靠,一味地複製粘貼而已。結果,網上所有關於VBS調用MSWinsock的例子都是"空中樓閣",沒有一個跑的起來。國內如此,國外也一樣。所有對該控件無法使用的質疑,都被人以"需要註冊"為理由打發了。當然,也有瞭解"真相"的人,但其給出的解決方案竟然是用VB重新寫個ocx封裝MSWinsock,這實在是@#$%^&!。 那麼,"真相"究竟是什麼?搜索"類別未授權使用"和錯誤號,這是個好主意,但結果不理想。我們需要逆向思考,為什麼原作者不會遇到錯誤。答案是原作者的mswinsck.ocx不是單獨註冊的,而是隨VB一起安裝的。其中的差別在於,後者會安裝VB控件的設計時許可證(design-time license)。ActiveX控件的License有兩種:設計時(design-time)和運行時(run-time)。當編譯調用了某個控件的exe/dll/ocx時,編譯器會自動加入該控件的運行時許可證,所以"重新寫個ocx封裝MSWinsock"這個辦法可行。使用腳本直接調用MSWinsock時沒有運行時許可證,這時腳本宿主會嘗試在註冊表中獲取設計時許可證,單獨註冊的MSWinsock沒有相應的設計時許可證,所以就出錯了。 在VS.NET安裝盤裡有VB6控件的授權密鑰(\Extras\VB6 Controls\VB6Controls.reg),導入註冊表後就能正常使用包括MSWinsock在內的VB6控件了。 另一個解決方法: 重點在於mswinsck.ocx 這個ActiveX Control 的使用權註冊,這必須要在Windows 的registry 中,有一個license key 才可以,但mswinsck.ocx 的license key 是什麼呢? 微軟網站上,有個公用程式可以下載: http://download.microsoft.com/download/vc60std/sample/1.1/NT45/EN-US/Licreqst.exe 然後就可以看到mswinsck.ocx(其ProgID 是「MSWinsock.Winsock」)的license key 了(應 該說可以看到其它ActiveX Control 的license key),找到後,在registry 的: HKEY_CLASSES_ROOT\Licenses 找到該key、並點選到它,然後匯出登錄檔,把這個登錄檔給user,在他的電腦中用滑鼠 DoubleClick 將其加入登錄中,當然mswinsck.ocx 也需以regsvr32 註冊,這兩個動作完成後, Client 就可以正常執行了。而這兩個動作都可以透過WSH 物件來做,也就是說,你的程式可 以幫user 自動做的意思。 其它ActiveX Control 的license 問題,也都可以比照此法。
返回到
0x80040112 : 無使用此類別的授權許可
。
檢視
頁面
討論
原始碼
歷史
個人工具
登入/建立新帳號 選單
導航
首頁
社群入口
現時事件
近期變動
隨機頁面
使用說明
搜尋
工具箱
鏈入頁面
相關頁面修訂記錄
所有特殊頁面