RDweb:不能同时 运行 遗留 VB6 DLL 不止一次

RDweb: Cannot run legacy VB6 DLL more than once, at the same time

我们在所有客户的本地 C 驱动器上安装了一个 VB6 程序,以及一个关联的 VB6 DLL 程序。该程序是在我 90 年代之前写回来的。它不是为了 运行 关闭服务器或允许多个用户同时访问同一个 EXE 而设计的,因此它在每个人的 C 驱动器上。但是,它的所有 运行ning 会话都通过 ODBC 在单独的 SQL 服务器上引用相同的数据库源。数据库连接正常。

好的,这就是历史,每个人都在远程工作 (Covid19)!

然而今天,我们的客户都通过RD Web 远程访问虚拟服务器。我们希望他们避免使用我们的 VPN。我们有两个虚拟服务器分配给 RDweb 用户:TS01 和 TS02,以及最多 64 个用户的许可证。每个用户都会自动分配到两个服务器之一。如果两个人同时登录,一个在 TS01 另一个在 TS02 - 一切都很好!当第三个人登录并获得其中一台服务器时,运行s 程序崩溃,并出现此错误:

DLL 已在 Computer\HKEY_CLASSES_ROOT\Computer\HKEY_LOCAL_MACHINE\SOFTWARE\ 中注册,但未在 LOCAL_USER 中注册,我 认为 是必要的服务器环境中的多用户程序。

转换应用程序不是一个选项,因为我们没有 VB6 编译器。我们需要用“东西”包装 DLL 吗?

如果有任何关于如何让这个遗留程序 运行 供多个用户使用的想法,我们将不胜感激。

谢谢

尝试 installing/copying VB 程序和每个用户文件夹中的相关 DLL(例如主文件夹和指向这些 HOME 目录的快捷方式)。如果程序运行,它应该以相同的方式更新数据库。有时,大多数解决方法都很简单。如果他们需要不同的锁定 DLL 工作 space 然后给他们(以后可能有内存问题)

请看这个

https://docs.microsoft.com/en-us/archive/msdn-magazine/2005/april/simplify-app-deployment-with-clickonce-and-registration-free-com

有些 DLL 不是为共享而设计的,如果不重新编程就无法修改此行为。有进程内和进程外(线程)DLL。或者可能还有许多其他问题。如果它不起作用,则它不是设计允许的。

https://support.microsoft.com/en-au/help/911359/a-client-application-may-intermittently-receive-an-error-message-when

在系统范围内使用的共享 DLL 没有此限制,因为它们被设计为供许多应用程序使用。 请尝试评论行为。