我编写了一个从第三方应用程序(使用 VBA 编写脚本)加载的 COM DLL。
在启动时,应用程序将一个值传递给 DLL,以便之后找到它的实例。
这个(非托管)值是我创建的应用程序的特定类型static
和全局(它在任何类之外)。
DLL 在注册表中正确注册(使用regasm
),并且第三方应用程序正确加载了 DLL。
DLL 被放置在系统的目录中(即 System32 或 SysWoW64)。
在 Windows XP 中,DLL 的工作原理很像,但在 Windows 7(64 位)中,存在一个问题:静态值变为 null!但是,DLL 的其余部分运行良好,只是这个值有问题。
另一方面,当我们将 DLL 放在非系统的文件夹中时,就可以了。
我认为GC破坏了价值,但这是不可能的,因为存在静态和非托管。
GC 的问题是什么?为什么系统的文件夹不起作用(即使具有管理员权限)?Windows7有专长吗?