Is it possible to register a .NET assembly for COM interop without adding registry entries?

冷暖自知 提交于 2019-12-03 20:57:16

问题


I am deploying a .NET VSTO application via click once. The application's main assembly needs to be registered for COM interop as part of the installation process. I know that this can be done by writing code to execute "REGASM assembly.dll /tlb", but the problem is that the target workstations that will be installing my application don't have administrative rights, so the regasm fails when trying to register the type library.

My question is, how can I register my .net assembly for com interoperability when I don't have administrative access?


回答1:


You could use registration-free activation of COM components. I have used this in an application deployed via click-once and it worked well. Here are a few links to get you started:

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




回答2:


I came across registration-free COM while researching a related problem. I didn't end up using it, so I can't say for sure if it will solve your problem, but it might be worth checking out:

Simplify App Deployment with ClickOnce and Registration-Free COM

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




回答3:


Don't think you can. Might be wrong but a big part of COM is really just a way to find things via the registry. If you can't edit the registry... you are in trouble.

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




回答4:


It depends on the scenario, but maybe Registration free COM (using a manifest) will help. See this article



来源:https://stackoverflow.com/questions/4903385/is-it-possible-to-register-a-net-assembly-for-com-interop-without-adding-regist

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!