问题描述
免责声明:是的,我认为这个问题归结为了解一些 DCOM 基础知识以及 VBS CreateObject 实际做什么/需要什么:
我有一个通过 (D?)COM 提供自动化接口的 3rd 方应用程序。 该界面在我们安装应用程序时会自动注册,在本地运行简单的 VBS 脚本时它可以正常工作:
这在同一台机器上工作正常:
Dim oAppApi
WScript.Echo "Hello,try to connect ..."
Set oAppApi = CreateObject("theapp.theapp") ' Note that this will either start the application or connect to an already started instance
WScript.Echo oAppApi.APIVersion
oAppApi.disconnectFromTool
这也适用于同一台机器:
Dim oAppApi
WScript.Echo "Hello,try to connect ..."
Set oAppApi = CreateObject("theapp.theapp","localhost")
WScript.Echo oAppApi.APIVersion
oAppApi.disconnectFromTool
在同一网络中的另一台 PC 上运行时会失败:
Dim oAppApi
WScript.Echo "Hello,"machineNameWithAppInstalled") ' FAIL: ActiveX component can't create object
要使这个简单的 VBScript 在远程机器上工作需要什么?
- 是否需要在客户端计算机上安装任何东西? (COM 代理 DLL 之类的?)
- 客户端需要知道 CreateObject 的
ServerName.TypeName
吗? - 我们是否必须在服务器上做一些
DMCOMCnfg
魔法?
其他详细信息:
根据我对 COM 的了解,这可能取决于这些内容的注册方式,这是我通过应用程序 PC 上“TheApp.TheApp”注册表的“跟踪”:
[HKEY_CLASSES_ROOT\TheApp.TheApp]
@="com.company.toolAPI.theapp.theapp"
[HKEY_CLASSES_ROOT\TheApp.TheApp\CLSID]
@="{0CBEA087-0CC7-4D15-A659-8B3AC68B82E1}"
[HKEY_CLASSES_ROOT\TheApp.TheApp\CurVer]
@="TheApp.TheApp.7.2"
...
[HKEY_CLASSES_ROOT\TheApp.TheApp.7.2]
@="TheApp.TheApp"
[HKEY_CLASSES_ROOT\TheApp.TheApp.7.2\CLSID]
@="{0CBEA087-0CC7-4D15-A659-8B3AC68B82E1}"
...
[HKEY_CLASSES_ROOT\AppID\{0CBEA087-0CC7-4D15-A659-8B3AC68B82E1}]
@="THEAPP72 Server"
"DllSurrogate"=""
"RunAs"="Interactive User"
...
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{0CBEA087-0CC7-4D15-A659-8B3AC68B82E1}]
@="com.company.toolAPI.theapp.theapp"
"AppID"="{0CBEA087-0CC7-4D15-A659-8B3AC68B82E1}"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{0CBEA087-0CC7-4D15-A659-8B3AC68B82E1}\Implemented Categories]
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{0CBEA087-0CC7-4D15-A659-8B3AC68B82E1}\Implemented Categories\{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}]
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{0CBEA087-0CC7-4D15-A659-8B3AC68B82E1}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="com.company.toolAPI.theapp.theapp"
"Assembly"="TheAppCOM,Version=11.0.0.0,Culture=neutral,PublicKeyToken=c9b6e760b808c9f9"
"RuntimeVersion"="v2.0.50727"
"CodeBase"="file:///C:/Company/THEAPP7.2/interface/TheAppCOM.DLL"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{0CBEA087-0CC7-4D15-A659-8B3AC68B82E1}\InprocServer32\11.0.0.0]
"Class"="com.company.toolAPI.theapp.theapp"
"Assembly"="TheAppCOM,PublicKeyToken=c9b6e760b808c9f9"
"RuntimeVersion"="v2.0.50727"
"CodeBase"="file:///C:/Company/THEAPP7.2/interface/TheAppCOM.DLL"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{0CBEA087-0CC7-4D15-A659-8B3AC68B82E1}\ProgId]
@="TheApp.TheApp"
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)