我们在所有客户端的本地C驱动器上安装了一个VB6程序,以及一个相关的VB6 DLL程序。这个程序在我90年代之前就被写了回去。它的设计并不是为了运行服务器或允许多个用户同时访问同一个EXE,因此它位于每个人的C驱动器上。但是,它的所有运行会话都通过ODBC引用单独Server上的同一个数据库源。数据库连接工作正常。
好的,这就是历史,每个人都在远程工作(Covid19)!
今天的--然而--我们的客户端都通过RD网远程访问虚拟服务器。我们希望他们避免使用我们的VPN。我们有两个分配给RDweb用户的虚拟服务器: TS01和TS02,以及多达64个用户的许可证。每个用户都会自动分配两台服务器中的一台。如果两个人同时登录,一个在TS01,另一个在TS02 --一切都很好!当第三人登录并被分配给任何一个服务器并运行该程序时,当程序崩溃时,就会出现以下错误:

DLL是在Computer\HKEY_CLASSES_ROOT\和Computer\HKEY_LOCAL_MACHINE\SOFTWARE\中注册的,而不是LOCAL_USER,我认为是使它成为服务器环境中的多用户程序所必需的。
转换应用程序不是一个选项,因为我们没有VB6编译器。我们需要把DLL包装成“东西”吗?
任何想法如何使这个遗留程序运行为多个用户,将受到赞赏。
谢谢
发布于 2020-05-20 21:02:07
尝试在每个用户文件夹中安装/复制VB程序和相关DLL(比如指向这些主目录的主文件夹和快捷方式)。如果程序运行,它应该以同样的方式更新数据库。有时,大多数的解决办法都很简单。如果他们需要不同的锁定DLL工作空间,那么给他们这个空间(以后可能会有内存问题)
请看这个https://stackoverflow.com/a/345154/12011019
和
有些DLL不是设计为共享的,如果不重新编程,则无法修改此行为。有进程和出进程(线程)DLL。或者还有很多其他的问题。如果它不起作用,它就不被设计所允许。
系统范围内使用的共享DLL不具有此限制,因为它们被设计用于许多应用程序。请试着评论一下这种行为。
https://stackoverflow.com/questions/61090672
复制相似问题