我有一个COM dll(比如Mydlib.dll)和一个应用程序(比如myapp.exe)。现在Mydlib.dll(commonprogramfiles / ...)的全局路径保存在注册表中。但对于这个特定的应用程序,我需要一个保存在不同位置的私有版本。实际上它是相同的副本,但应用程序希望其私有副本独立于共享副本。我做了一些研究,并着手使用清单文件来解决这个问题。 http://msdn.microsoft.com/en-us/library/ms973913.aspx#rfacomwalk_topic10
使用此功能,我成功地制作了两个清单(myapp.exe.manifest和Mydlib.X.manifest)。使用此方法,我可以将Mydlib.dll保存在myapp.exe根文件夹中的子文件夹中,并在Mydlib.X.manifest的文件元素的name属性中指定路径。即
||文件名=“/ Mialib.dll”||
一切正常,直到这里。
问题:
现在由于一些许可问题,我无法将此Mydlib.dll保留在根文件夹中。所以我改变了Mydlib.X.manifest并将文件元素改为了
||文件名= .. // Mydlib.dll ||
我也试过绝对路径
||文件名= /Mydlib.dll ||
上述两种路径在WindowsXP中都能正常工作。
但是从win2003开始并且在病房路径上不能成为一条绝对的道路。相对路径必须是根文件夹的子文件夹。因此,我无法在Windows 2003以上获得类似的行为。本文的故障排除部分已经提到了这一点。
是否有任何解决方法或另一种方法可以达到相同的效果。
请帮助。 谢谢 -U
答案 0 :(得分:1)
您引用的文章还讨论了 Activation Context API 。
可能使用此方法而不仅仅是清单文件。 您可以使用它来指向非子文件夹。 目前尚不清楚2003年的限制是否适用,我怀疑它们可能没有。 我没试过,但这是一个建议。