有一個dll, 在安裝第三方軟體(用VB6.0做的)之后,本機就有了。
使用VB6.0 ,通過添加參考,就可以直接new其中物件了(dll中包含了許多物件)。
不參考的情況下,在VB6.0 可以CreateObject。
問題:
1、這個dll,包含了許多物件型別,檔案介紹說這個dll是一個元件,元件 和 DCOM/COM+是一個東西嗎?
2、在VB.NET ,winform程式也可以直接 CreateObject。但是如果在.net環境 ,在web service中使用 ,CreateObject其中的物件,會提示無法創建 ActiveX 組件。
之前發過貼 https://bbs.csdn.net/topics/396438466
我按這份方法https://blog.csdn.net/milaoshu1020/article/details/104093137。 我找到了CLSID,在注冊表中, 根據CLSID也找到了物件的名稱。但是在 DCOM/COM+中找不到對應的組件可以放開權限。這個有什么解決思路。
謝謝
uj5u.com熱心網友回復:
comexp.msc -32參考資料:
https://blog.csdn.net/weixin_34204057/article/details/93672668
uj5u.com熱心網友回復:
32位組件服務,還是沒有。
在注冊表下,是在這個位置。
\HKEY_CLASSES_ROOT\XXX.Vector
但是 comexp.msc ,沒有看到有XXX.Vector 或者 XXX,或者Vector 的節點。
在注冊表,可以看到CLSID 是{09AFE6F7-5BDB-11d1-9C2A-127658000000},能在32位組件服務, 下根據CLSID查詢嗎?
uj5u.com熱心網友回復:
都沒有就找這個: {09AFE6F7-5BDB-11d1-9C2A-127658000000}一樣起作用;
uj5u.com熱心網友回復:
不需要查詢,直接串列顯示,他是按字母排序的:
uj5u.com熱心網友回復:
在web service中使用 ,CreateObject其中的物件,會提示無法創建 ActiveX 組件。應該是權限問題,本人在.net的WebService中創建VB6寫的ActiveDLL組件沒有問題。
uj5u.com熱心網友回復:
這個是安裝第三方軟體(用VB6.0做的)后,才能在注冊表找到。
串列顯示的,后面的幾十個名稱和CLSID一樣的,可以這樣查。
但是前面的幾十個是有單獨名稱的(比如 Excel),和CLSID不一樣的,而且串列只能按名稱排序。不能按CLSID排序。
第三方軟體有檔案介紹這個組件(用VB6.0做的),說是他元件,元件都在組件服務中能找到嗎?
提示不能創建 ActiveX 組件 的ABC.Vector, 在第三方軟體安裝目錄,有ABC10.dll ,Vector 是其中的一個物件。檔案介紹這個組件全名叫 Axxx Bxxx Cxxxx
在注冊表,是可以找到Axxx Bxxx Cxxxx 和 CLSID,但是在組件服務,找不到ABC或者Axxx Bxxx Cxxxx,也找不到 ABC.Vector
uj5u.com熱心網友回復:
如果VB6寫的ActiveDLL,其中沒有再呼叫第三方組件,呼叫是沒問題的。第三方組件,檔案介紹是用VB6.0 做出的元件。
VB6.0 或者VB.NET 使用winform程式CreateObject 這個第三方組件沒問題。web service 就提示錯誤。
在組件服務找不到這個組件(已經知道CLSID)添加權限
uj5u.com熱心網友回復:
我試了一下,VB6做的類在DCOM組件設定中就是顯示為CLSID的,你可以找找有沒有;實在不行我教你...咱們用向日葵;
uj5u.com熱心網友回復:
感謝你。
我上面說的第三方軟體是金蝶的ERP系統,老系統,底層都是用VB6.0做的。
安裝完之后,本身就在組件服務中注冊了一些以KD開頭的組件,是否存在CLSID的組件現在還不知道。
上面說的在web service 創建 Vector提示無法創建 ActiveX,我是這樣寫的: CreateObject("KFO.Vector")
這個寫法在VB6.0 和VB.NET是可以創建物件的。
而KFO,對應的dll ,是 kfo10.dll 。我把這個組件放到沒有安裝金蝶ERP的PC,regsvr32 注冊成功后。在注冊表 能查Kingdee Foundation Objects, CLSID 是
BD29F730-5BDA-11D1-9C2A-127658000000。和我本機的CLSID 一樣。在這臺PC,組件服務沒有找到BD29F730-5BDA-11D1-9C2A-127658000000 這個組件。
注冊表里有的,是否組件服務一定會有嗎?
方便的話,留個郵箱,我可以把 kfo10.dll 發給你,你本機可以注冊和看能否找到。
uj5u.com熱心網友回復:
關于KFO的介紹,在這里
https://wenku.baidu.com/view/2f8c5e4de518964bcf847c6b.html
uj5u.com熱心網友回復:
KFO.Vector 在注冊表,有另外一個單獨的CLSID。但是組件服務統一找不到
uj5u.com熱心網友回復:
郵箱地址已私信你,把dll發給我吧;或者把檔案上傳到百度網盤,點擊共享,把共享代碼貼在這里也可以;
uj5u.com熱心網友回復:
已經發你的郵箱了,謝謝。
uj5u.com熱心網友回復:
我用vbs腳本創建物件:CreateObject("KFO.Vector")
提示這個怎么辦:

uj5u.com熱心網友回復:
看了一下,這個類創建的話需要許可證:
uj5u.com熱心網友回復:
你用的是腳本? VBScrip?
我直接是使用VB6.0 插件一個標準exe ,正常的啊。
除非正式客戶,我們都沒有許可證的。
Private Sub Command1_Click()
Dim a As Object
Set a = CreateObject("KFO.Vector")
End Sub
uj5u.com熱心網友回復:
是不行,我再今天早上那臺PC上試過,我用VB做的exe程式,我本機正常。到他的PC,提示無法創建activeX 組件。
你本機組成了這個dll ,你看看你注冊表應該有 Kingdee Foundation Objects和 KFO.Vector 吧
uj5u.com熱心網友回復:
我又試了一下,在VB6.0 ,添加參考。然后這樣寫。沒有安裝ERP的可以正常運行
Private Sub Command1_Click()
Dim a As New KFO.Vector
MsgBox (a.Size)
End Sub
uj5u.com熱心網友回復:
可以用server.createobject代替createobject,真的管用;我這里出現的錯誤仍然是權限錯誤,你可以自己試試;
參考資料:
https://stackoverflow.com/questions/27615726/classic-asp-error-800a01ad-activex-component-cant-create-object
uj5u.com熱心網友回復:
我最終目的是插件web service
<WebMethod()> _
Public Function HelloWorld() As String
CreateObject("KFO.Vector")
Return "Hello World"
End Function
無法創建組件“KFO.Vector”。僅可在帶有 <%@ Page aspcompat=true %> 頁指令的頁上創建單元執行緒組件。
uj5u.com熱心網友回復:
我沒用過你的插件web service,但是我可以在.net類別庫中找得到相關的類和物件:

另外,"無法創建組件"KFO.Vector". 僅可在帶有<%@ Page aspcompat=true %>頁指令的頁上創建單元執行緒組件."
--- 這句話不是已經說的很清楚了嗎,要在aspx頁面頭部加上<%@ Page aspcompat=true %>才可以成功createobject你那個類的物件;
uj5u.com熱心網友回復:
VB6中使用As New宣告的變數僅在呼叫方法或者屬性的時候才創建物件;
你可以改成這樣試試:
Private Sub Command1_Click()
Dim a As KFO.Vector
Set a = New KFO.Vector
MsgBox (a.Size)
End Sub
uj5u.com熱心網友回復:
Private Sub Command1_Click()
Dim a As KFO.Vector
Set a = New KFO.Vector
MsgBox (a.Size)
End Sub
我改成這樣寫,在沒有安裝ERP上運行也沒有問題。
uj5u.com熱心網友回復:
Private Sub Command1_Click()
Dim a As KFO.Vector
Set a = New KFO.Vector
MsgBox (a.Size)
End Sub
我改成這樣寫,在沒有安裝ERP上運行也沒有問題。
你機器上運行沒問題不代表我機器上運行沒問題;
不過這個不是重點;
重點是你現在是否可以在VB.NET中成功使用CreateObject("KFO.Vector")了?
uj5u.com熱心網友回復:
Private Sub Command1_Click()
Dim a As KFO.Vector
Set a = New KFO.Vector
MsgBox (a.Size)
End Sub
我改成這樣寫,在沒有安裝ERP上運行也沒有問題。
你機器上運行沒問題不代表我機器上運行沒問題;
不過這個不是重點;
重點是你現在是否可以在VB.NET中成功使用CreateObject("KFO.Vector")了?
winform程式沒有問題。
web 程式報無法創建 ActiveX 組件
uj5u.com熱心網友回復:
在aspx頁面頭部加上<%@ Page aspcompat=true %>才可以成功createobject你那個類的物件;轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/11924.html
上一篇:Vb答疑帖
