SLa*_*aks 18 .net outlook vba com-interop limited-user
我是一个有限的用户,我需要编写一个Outlook宏来展示Outlook 2003和2007中的C#库.
我根本没有任何管理员权限,即使在安装时也没有,所以我无法运行RegAsm,我不能(我假设)编写一个托管加载项.
在这种情况下,有没有办法从VBA调用.Net代码,还是有其他解决方案?
这仅供个人使用,所以丑陋的黑客是完全可以接受的(只要它有效)
有RegistrationServices.RegisterAssembly
.NET API(我相信是使用RegAsm.exe
).
还有RegOverridePredefKey
Win32 API,不显眼但非常有用,它允许重新映射HKEY_CLASSES_ROOT
(使用RegisterAssembly
)HKEY_CURRENT_USER\Software\Classes
.
一个聪明的程序可以使用它们RegistrationServices.RegisterAssembly
并RegOverridePredefKey
为COM客户端注册程序集HKEY_CURRENT_USER
.
我自己没试过,但我相信这是可行的.
更新后,显然这种方法确实有效.
注册COM对象(例如ActiveX控件)并使其对系统中的所有用户可见,这需要管理权限。
但是,如果不需要所有用户的可见性(或由于受限的用户限制而无法看到),则只能为特定用户注册COM对象。
通常通过在HKCU中而不是HKLM中注册对象来完成。这将适用于“常规” COM对象以及通过.NET COM Interop公开的对象。
其他更细粒度的方法也已经存在,已经提到的RegFree COM解决了特定的可执行文件。
因此,鉴于以上所有情况,将所有信息捕获到reg文件中并将HKLM替换为HKCU的解决方案应该可以工作(虽然不错,但工具也可以)。