无法在包含文件夹之外注册/加载 DLL

无法在包含文件夹之外注册/加载 DLL

我有一个使用第三方运行时的应用程序(x64),并且该应用程序在通过其 DLL(也是 x64)加载该运行时时遇到问题。

Windows 安装程序很难注册这些 DLL(可能出于类似的原因),因此我测试了使用 regsvr32 注册 DLL,并发现了一些有趣的行为。我可以使用 regsvr32 成功注册和取消注册 DLL(之后我可以在注册表中的 CLSID 下找到它们),但是仅有的如果我从存储 DLL 的文件夹中执行 regsvr32。即使我从存储它们的文件夹中使用相对路径(例如 ....\outer\dlls\binary.dll),它们仍会成功注册。我尝试使用完整路径和部分路径,从路径中的大约 4 级下降到 1 级,但都失败了。

它总是返回的错误是“对内存位置的访问无效。”由于其含义模糊,很难找到其来源。

有人遇到过这个问题吗?有人知道原因是什么吗?奇怪的是它在文件夹内有效,但在其他任何地方都无效。我只能假设存在一些环境问题或损坏,因为我的其他机器根本没有问题。我确实运行了 .NET 修复工具,但似乎没有任何区别。

相关内容