为另一台机器上的 COM 接口调用 VBS CreateObject("someapp.someapp", "remote PC") ?

问题描述

免责声明:是的,我认为这个问题归结为了解一些 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 之类的?)
  • 客户端需要知道 CreateObjectServerName.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 (将#修改为@)