注册在客户端计算机上注册的针对Excel编写的COM服务器的问题(无法设置mscoree.dll的完整path)

在这个前面的问题< 如何获得在VB.NET中编写的Excel的COM服务器安装和注册在自动化服务器列表中? >有一个示例,说明如何使用VS 2008创buildregistry项的完整path。除了我设置的完整path(使用VS中的registry编辑器),mscoree.dll无法正常工作(这意味着它什么都不做)。

完整的registrypath是:

HKEY_CLASSES_ROOT \ CLSID \ {my_GUID} \ InprocServer32的\(默认)

我设定的值是:

[SystemFolder] MSCorEE.dll中

我可以把任何东西(包括硬编码的完整path),但设置似乎并不重要,registry总是包含mscoree.dll没有任何path。

我已经尝试通过VS添加另一个值到registrypath,并正常工作,包括由[SystemFolder]指定的完整path。

我需要完整path的原因是(如前面的问题所述),如果没有path,Excel会在自动化服务器被选中时产生一个错误,因为它找不到mscoree.dll(有趣的是,即使我收到一个错误, )。

我正在通过安装项目安装,否则工作正常。

我在VISTA * 64系统上安装,但是在其他操作系统上却得到了相同的错误。

有谁知道我在做什么错?

我没有尝试,但我猜测这是有关VS.NET放入您的registry项“[SystemFolder] mscoree.dll”。 这是在原来的职位工作。 这可能是因为VS.NET先运行“regasm / regfile”,然后用“[SystemFolder] mscoree.dll”覆盖该密钥

在你的情况下,它不起作用,因为VS.NET首先将你的registry键“[SystemFolder] mscoree.dll”放入MSIregistry中,然后你的值被“regasm / regfile”输出的值覆盖。

为了排除VS.NET覆盖你的值的可能性,我想你可以标记你的DLL vsdrpDoNotRegister。 然后,VS.NET不会在你的registry上做任何魔术。 现在,您可以自己做正确的插件注册。 但是,正如原来所说的,所有VS.NET所做的只是简单地调用“regasm / regfile”。 你为什么不自己动手呢 一旦你从“regasm / regfile your.dll”得到.reg文件,你唯一需要做的就是把它导入到registry中。 右键单击“目标机器上的registry”,然后单击“导入…”菜单。 而已。 这并不难。 导入你的reg文件后,你应该看到下面的键

HKEY_CLASSES_ROOT\CLSID\{my_GUID}\InprocServer32\(default) 

值应该仍然被设置为mscoree.dll。 现在,您可以将其更改为[SystemFolder] mscoree.dll。