我是受限用户,需要编写一个在Outlook2003和2007中公开C#库的Outlook宏。
我根本没有任何管理员特权,甚至在安装时也没有,所以我不能运行RegAsm,我也不能(假设)编写托管插件。
在这种情况下,有没有办法从VBA中调用.Net代码,或者是否有其他解决方案?
这只是个人使用,所以一个丑陋的黑客是完全可以接受的(只要它能工作)
发布于 2009-10-23 20:07:06
我通过运行带有/regfile选项的regasm解决了这个问题,并在生成的.reg文件中用HKCU替换HKLM。
发布于 2014-04-15 15:21:27
还有RegistrationServices.RegisterAssembly .NET应用程序接口(我相信RegAsm.exe使用了它)。
还有RegOverridePredefKey Win32 API,它不起眼,但相当有用,它允许将HKEY_CLASSES_ROOT (由RegisterAssembly使用)重新映射到HKEY_CURRENT_USER\Software\Classes。
聪明的程序可以同时使用RegistrationServices.RegisterAssembly和RegOverridePredefKey为HKEY_CURRENT_USER下的COM客户端注册程序集。
我自己还没有试过,但我相信这是可行的。
更新了,显然这种方法是does works。
发布于 2010-03-23 02:27:55
注册COM对象(例如ActiveX控制),并使其对系统中的所有用户可见需要管理权限。
但是,如果不需要对所有用户都可见(或者由于有限的用户限制而不可能),则只能为特定用户注册COM对象。
这通常是通过在HKCU而不是HKLM中注册对象来完成的。这将适用于“常规”COM对象和通过.NET COM互操作公开的COM对象。
其他更细粒度的方法也存在,已经提到的RegFree COM解决了特定的可执行文件。
因此,考虑到上面的所有内容,将所有信息捕获到reg文件中并用HKCU替换HKLM的解决方案应该有效(不是很好,但工具也是如此)。
https://stackoverflow.com/questions/1354581
复制相似问题