1

我遇到了 32 位 MMC 管理单元的问题(在 x64 服务器 2008 机器上)。管理单元已成功注册。当我使用 mmc(使用 32 位选项)启动关联的.msc 文件时,管理单元的名称显示在 LHS 上,但 RHS 显示一个错误页面,指出无法加载该页面。

使用 procmon,我认为我已经确定问题与未能找到产品随附并由管理单元使用的 DLL 有关。它位于目录 c:\\bin 中,该目录在 PATH 环境变量中指定。但是,MMC 似乎只在 c:\windows\sysWOW6432 目录中查找(即 64 位计算机上的 c:\windows\system32 的 32 位版本)。如果它还继续搜索 PATH 上指定的其他目录(包括 c:\\bin 目录),我不会介意这一点。

我已经测试了这个假设并将 DLL 放在 syswow6432 目录中,从那里开始一切似乎都正常工作。

我显然不想将所有特定于产品的 DLL 放在系统目录中,而是希望将它们保留在特定于产品的目录中。

谁能解释无法在 PATH 上找到 DLL 和解决方案。

4

1 回答 1

0

在注册依赖程序集时使用/codebase选项。RegAsm.exe您可以指定程序集的完全限定路径,当从 MMC 管理单元树中选择管理单元时,该程序集将被延迟加载。

在 64 位 MS 操作系统上,在没有 的情况下/codebase,从目录加载 32 位管理单元的依赖程序集/DLL,SYSWOW64而 64 位管理单元从目录加载依赖程序集/DLL system32PATH似乎没有考虑到等式,尽管,或者,您可能会使用gacutil.exe将您的依赖程序集安装到 GAC 副污染 SYSWOW64 中。

于 2012-06-20T16:39:16.023 回答