从共享文件夹运行程序时出现问题

本文关键字:问题 程序 运行 共享 共享文件 文件夹 | 更新日期: 2023-09-27 18:24:44

我们目前正在开发基于提供给我们的API的.net 4.0外部实用程序。

启动外部实用程序的主程序位于虚拟服务器上。因此,每个用户都通过转到网络文件夹并启动.exe.来启动程序

在主程序中,有一个启动外部公用程序的选项,这些公用程序也是从网络路径启动的。

外部实用程序通过api dll连接到主程序。如果我没有记错的话,dll是一个activex组件。

所有开发人员都有主程序的本地安装。这是在.Net中创建引用所必需的。如果安装不可用,则无法绑定引用。对于开发人员来说,该工具是有效的。

但对于没有完全安装的最终用户来说,该工具不起作用,因为它会进入注册表并查找一些值。这些在和最终用户站不可用。

最终用户在尝试启动时收到此警告

无法强制转换类型为"System"的COM对象__ComObject"到接口类型"MegaMapp.MegaCurrentEnv"。此操作失败,因为对IID为"{33D6C7C0-7D1B-450E-B8A4-8A861D15B40F}"的接口的COM组件的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULT异常:0x80004002(E_NOINTERFACE))

{33D6C7C0-7D1B-450E-B8A4-8A8611D5B40F}是最终用户无法使用的注册表项。

有没有办法告诉工具,他们应该从exe所在的服务器而不是从本地注册表加载注册表项?

从共享文件夹运行程序时出现问题

ActiveX组件将始终需要在客户端计算机上进行注册表设置。

您可以在应用程序启动期间使用regsvr32来注册DLL,然后再使用它。我不确定是否需要管理员权限。

我不会尝试在这样的环境中使用ActiveX。

activex dll是我们与软件通信的唯一方式。因此,我们使用api调用构建了.net程序。

构建一个使用ActiveX组件的服务器(例如WCF服务主机),并从每个客户端与该服务器进行通信。

如果外部实用程序是ActiveX EXE,则可以使用标准regsvr32实用程序在最终用户的计算机上注册它。这只需要第一次做。