获取要调用的应用程序主目录中的 DLL,而不是注册的 DLL



是的,我知道vb6 ancient和所有这些。这仍然是一个有趣的问题。这个问题甚至可能与vb6无关....

后台:我们有一个服务器运行一个vb6应用程序,我们的用户访问这个通过Citrix。这个安装的应用程序从一个"共享文件夹"访问它的dll(也是用vb6编写的)。位置。

我想做的是在同一台服务器上拥有同一应用程序的上一个版本,访问它自己的(以前版本)dll集。我成功了一半。重命名后的应用程序在另一个目录下运行。但是在使用任何从DLL代码中提取的特性时,它会立即崩溃。

显然注册了正在调用当前版本的dll。我不想那样。我希望在重命名的旧应用程序的同一目录中找到的dll被调用。

这会发生在windows服务器上吗?这是安装程序的设置问题吗?你以前遇到过这种情况吗?你成功了吗?

提前感谢。哈利

后记:老板们决定尝试dll和系统设置是浪费时间,不值得冒险。所以他们砸钱给它,另一个服务器将上线,唯一的原因是为需要它的citrix用户提供以前的版本。感谢你们所有的人,你们提供了很棒的建议,并引导了其他帖子。(是的,我也有点失望。我想知道这个问题的解决方案是什么.....)

操作系统应该在以下位置和顺序查找dll

  1. 应用程序路径注册表项中列出的目录(HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionApp路径)如果有
  2. 当前进程的可执行模块所在目录
  3. 当前目录
  4. Windows系统目录
  5. Windows目录
  6. 在PATH环境变量
  7. 中列出的目录

考虑到您正在使用dll的共享文件夹,我认为应用程序正在将当前目录设置为您的共享文件夹或使用PATH环境变量指定要查看的位置。我不认为它正在使用应用程序路径注册表键路径,因为那是版本特定的,你说你正在使用不同的版本。

我建议您尝试通过HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionApp Paths设置路径

最新更新