首页 > 解决方案 > 为另一台机器上的 COM 接口调用 VBS CreateObject("someapp.someapp", "remote PC")?

问题描述

免责声明:是的,我认为这个问题归结为了解一些 DCOM 基础知识以及 VBS CreateObject 实际做什么/需要什么:

我有一个通过 (D?)COM 提供自动化接口的第 3 方应用程序。当我们安装应用程序时,该接口会自动注册,并且在本地运行简单的 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, try to connect ..."
Set oAppApi = CreateObject("theapp.theapp", "machineNameWithAppInstalled") ' FAIL: ActiveX component can't create object

使这个简单的 VBScript 在远程机器上工作需要什么?


额外细节:

因为,根据我对 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, 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}\ProgId]
@="TheApp.TheApp"

标签: vbscriptcomwindows-10dcom

解决方案


推荐阅读