0

我编写了一个从第三方应用程序(使用 VBA 编写脚本)加载的 COM DLL。

在启动时,应用程序将一个值传递给 DLL,以便之后找到它的实例。

这个(非托管)值是我创建的应用程序的特定类型static和全局(它在任何类之外)。

DLL 在注册表中正确注册(使用regasm),并且第三方应用程序正确加载了 DLL。

DLL 被放置在系统的目录中(即 System32 或 SysWoW64)。

在 Windows XP 中,DLL 的工作原理很像,但在 Windows 7(64 位)中,存在一个问题:静态值变为 null!但是,DLL 的其余部分运行良好,只是这个值有问题。

另一方面,当我们将 DLL 放在非系统的文件夹中时,就可以了。

我认为GC破坏了价值,但这是不可能的,因为存在静态和非托管。

GC 的问题是什么?为什么系统的文件夹不起作用(即使具有管理员权限)?Windows7有专长吗?

4

1 回答 1

0

问题现在很清楚了:错误出在第三方应用程序上,而不是我的代码上。当我们将 DLL 放入系统文件夹时,发生了一些奇怪的事情。

于 2013-09-16T14:17:23.587 回答