0

我已经为 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 时。对于普通用户,它无法正常工作。

那么还有其他方法可以实现吗?或者我只能以管理员身份运行此代码?

4

1 回答 1

1

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

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

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

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

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

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

于 2015-01-08T12:09:16.203 回答