RDweb:不能同时多次运行旧版 VB6 DLL

Fan*_*o68 6 vb6 dll rdp remote-desktop web

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

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

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

在此处输入图片说明

DLL 在Computer\HKEY_CLASSES_ROOT\和 中注册Computer\HKEY_LOCAL_MACHINE\SOFTWARE\,但不是LOCAL_USER,我认为这是在服务器环境中使其成为多用户程序所必需的。

转换应用程序不是一种选择,因为我们没有 VB6 编译器。我们是否需要将 DLL 包装在“某物”中?

任何如何让这个遗留程序为多个用户运行的想法,都值得赞赏。

谢谢

小智 1

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

请参阅此 /sf/answers/24160811/

https://learn.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 没有此限制,因为它们被设计为供许多应用程序使用。请尝试并评论该行为。