首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不带regasm的COM Interop

不带regasm的COM Interop
EN

Stack Overflow用户
提问于 2009-08-30 18:42:56
回答 5查看 9K关注 0票数 19

我是受限用户,需要编写一个在Outlook2003和2007中公开C#库的Outlook宏。

我根本没有任何管理员特权,甚至在安装时也没有,所以我不能运行RegAsm,我也不能(假设)编写托管插件。

在这种情况下,有没有办法从VBA中调用.Net代码,或者是否有其他解决方案?

这只是个人使用,所以一个丑陋的黑客是完全可以接受的(只要它能工作)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-10-23 20:07:06

我通过运行带有/regfile选项的regasm解决了这个问题,并在生成的.reg文件中用HKCU替换HKLM。

票数 17
EN

Stack Overflow用户

发布于 2014-04-15 15:21:27

还有RegistrationServices.RegisterAssembly .NET应用程序接口(我相信RegAsm.exe使用了它)。

还有RegOverridePredefKey Win32 API,它不起眼,但相当有用,它允许将HKEY_CLASSES_ROOT (由RegisterAssembly使用)重新映射到HKEY_CURRENT_USER\Software\Classes

聪明的程序可以同时使用RegistrationServices.RegisterAssemblyRegOverridePredefKeyHKEY_CURRENT_USER下的COM客户端注册程序集。

我自己还没有试过,但我相信这是可行的。

更新了,显然这种方法是does works

票数 8
EN

Stack Overflow用户

发布于 2010-03-23 02:27:55

注册COM对象(例如ActiveX控制),并使其对系统中的所有用户可见需要管理权限。

但是,如果不需要对所有用户都可见(或者由于有限的用户限制而不可能),则只能为特定用户注册COM对象。

这通常是通过在HKCU而不是HKLM中注册对象来完成的。这将适用于“常规”COM对象和通过.NET COM互操作公开的COM对象。

其他更细粒度的方法也存在,已经提到的RegFree COM解决了特定的可执行文件。

因此,考虑到上面的所有内容,将所有信息捕获到reg文件中并用HKCU替换HKLM的解决方案应该有效(不是很好,但工具也是如此)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1354581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档