COM Interop没有regasm

SLa*_*aks 18 .net outlook vba com-interop limited-user

我是一个有限的用户,我需要编写一个Outlook宏来展示Outlook 2003和2007中的C#库.

我根本没有任何管理员权限,即使在安装时也没有,所以我无法运行RegAsm,我不能(我假设)编写一个托管加载项.

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

这仅供个人使用,所以丑陋的黑客是完全可以接受的(只要它有效)

SLa*_*aks 17

我通过运行解决了这一regasm带的/regfile选项,并导致与HKCU取代HKLM .reg文件.


nos*_*tio 6

RegistrationServices.RegisterAssembly.NET API(我相信是使用RegAsm.exe).

还有RegOverridePredefKeyWin32 API,不显眼但非常有用,它允许重新映射HKEY_CLASSES_ROOT(使用RegisterAssembly)HKEY_CURRENT_USER\Software\Classes.

一个聪明的程序可以使用它们RegistrationServices.RegisterAssemblyRegOverridePredefKey为COM客户端注册程序集HKEY_CURRENT_USER.

我自己没试过,但我相信这是可行的.

更新后,显然这种方法确实有效.


oki*_*gan 5

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

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

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

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

因此,鉴于以上所有情况,将所有信息捕获到reg文件中并将HKLM替换为HKCU的解决方案应该可以工作(虽然不错,但工具也可以)。