1

我们的测试人员报告了一些奇怪的行为。我们正在使用 RegAsm 注册一些 COM 可见的 .Net 2.0 组件。

出于某种原因,测试人员重命名了注册的 DLL,奇怪的是应用程序一直在加载所有组件。我没想到!

系统是否监视注册文件的名称更改?

4

1 回答 1

2

不知道您使用的 Regasm.exe 命令行使这成为猜测,有点不必要。你不知道它很重要肯定已经很好地解释了为什么你没有预料到测试结果。一个简单的解释是他们只是重命名了错误的 DLL。

Regasm.exe 强烈支持您在 GAC 中安装程序集,并在您不使用 /codebase 时大声抱怨。这是个好主意,如果客户端不使用清单,DLL Hell 在 COM 中是一个相当大的问题。因此,如果您以正确的方式执行此操作,那么他们不太可能攻击 GAC,很难找到该目录,并且该目录在 v4 之前的 .NET 版本中非常难以访问。而且,当然,DLL Hell 足以解释他们观察到的情况 :)

您可以通过使用 Regedit.exe 查看注册表项来缩小范围。如果您不知道在哪里查看,那么您可以使用 SysInternals 的 ProcMon 实用程序。在运行 Regasm.exe 时使用它,您会看到它写入注册表项。如果您不使用 ComVisible 类的 [Guid] 属性,这是安全的方法,那么您将在注册表中查看的这些位置取决于您的接口和类的版本。对它们进行更改会更改自动生成的 guid。

于 2013-06-20T13:43:17.040 回答