启用/禁用Outlook以编程方式添加

时间:2015-01-08 09:05:17

标签: outlook outlook-2013

我为Outlook 2013创建了加载项。

我想打开/关闭其他插件。所以我使用下面的代码来做到这一点。

Outlook.Application OutLook = new Outlook.Application();

if (OutLook.Application.COMAddIns.Item("OutlookAddIn").Connect)
{
 OutLook.Application.COMAddIns.Item("OutlookAddIn").Connect = false;
}
else
{
OutLook.Application.COMAddIns.Item("OutlookAddIn").Connect = true;
}

但是,只有当我以管理员身份打开outlook时,它才能正常工作。对于普通用户来说,它不能正常工作。

那么还有其他方法可以达到这个目的吗?或者我只能以管理员身份运行此代码?

1 个答案:

答案 0 :(得分:1)

您需要成为本地管理员或高级用户才能修改HKLM。普通用户没有足够的权限来修改加载项的windows registry keys 。很可能加载项已在HKLM配置单元中注册,我是对的吗?

当然,对于每台计算机加载项,如果您的应用程序以管理权限运行,则可以设置Connect属性。但是在启用了UAC的系统上,除了具有管理权限外,还必须提升应用程序进程。

您可以在Outlook中手动禁用加载项,甚至是每台计算机加载项。这意味着您可以添加HKCU条目来完成它。如果我查看注册表,HKEY_CURRENT_USER下的Addin的'LoadBehavior'值已更改。但是HKEY_LOCAL_MACHINE下的'LoadBehavior'的值没有改变。这是预期的行为 - 普通用户无法为所有用户禁用Addin。

请注意,在这种情况下,仅对当前用户禁用加载项。

这就是我建议在运行时禁用加载项的所有功能而不是尝试将其关闭的原因。在运行时,您可以根据身份验证结果检查用户是否有权加载您的加载项,您可以决定是否加载加载项的UI和其他业务逻辑(订阅Outlook事件等) 。即加载项将被启用,但最终用户将不会注意到。

即使您将LoadBehavior密钥添加到相应的HKCU配置单元,下次启动Outlook时也会加载该加载项。