是否可以在不添加注册表条目的情况下为COM interop注册.NET程序集?

问题描述:

我正在通过点击一次部署.NET VSTO应用程序。作为安装过程的一部分,应用程序的主程序集需要注册COM互操作。我知道这可以通过编写代码来执行“REGASM assembly.dll/tlb”来完成,但问题是将安装我的应用程序的目标工作站没有管理权限,因此在尝试注册时regasm失败类型库。是否可以在不添加注册表条目的情况下为COM interop注册.NET程序集?

我的问题是,我没有管理权限时,如何注册我的.net程序集以实现互操作性?

+2

无注册COM是此通常的答案。只是不适用于Office应用程序,有太多加载项竞争做同样的事情。在这个过程中打破你的清单。无论如何,您无法部署它,写入到办公室安装目录需要管理员权限。非常与ClickOnce部署不兼容。除了用户承认“是的,继续并且弄乱我的机器”之外别无选择。如果她相信你没有问题。 – 2011-02-04 22:36:14

+0

这看起来像(不幸)我的答案。虽然我不能检查评论! – 2011-02-05 02:52:42

你可以使用COM组件的免费注册激活。我已经在通过点击一次部署的应用程序中使用了它,它运行良好。这里有一些链接,让你开始:

Registration-Free Activation of .NET-Based Components

Walkthrough: Manually Deploying a ClickOnce Application

How To: ClickOnce deployment for unmanaged app with COM component in managed assembly

不要以为你可以。可能是错误的,但COM的一个重要组成部分实际上只是一种通过注册表查找事物的方法。如果你不能编辑注册表......你有麻烦了。

http://en.wikipedia.org/wiki/Component_Object_Model#Registry

+0

嗯..作为一个方面说明,我是否正确地认为缺乏管理权限意味着无法添加注册表项? – 2011-02-04 22:13:23

我遇到免注册COM来了,而研究一个相关的问题。我最终没有使用它,所以我不能肯定地说,如果将解决您的问题,但它可能是值得一试:

Simplify App Deployment with ClickOnce and Registration-Free COM

Registration-Free Activation of .NET-Based Components: A Walkthrough

这取决于场景,但也许注册免费COM(使用清单)将有所帮助。请参见this article