Enable/Disable Outlook 插件程序化
Enable/Disable Outlook Addin Programmatically
我已经为 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 时。对于普通用户,它不能正常工作。
那么有没有其他方法可以实现这一点?或者我只能以管理员身份运行此代码?
您需要是本地管理员或高级用户才能修改 HKLM。普通用户没有足够的权限修改加载项的 windows registry keys 。加载项很可能已在 HKLM 配置单元中注册,对吗?
当然,对于每台机器的加载项,如果您的应用程序 运行 具有管理权限,则可以设置连接 属性。但是在启用了UAC的系统上,除了要有管理权限外,还必须提升应用进程。
您可以在 Outlook 中手动禁用加载项,甚至是每台计算机的加载项。这意味着您可以添加一个 HKCU 条目来完成它。如果我查看注册表,HKEY_CURRENT_USER 下的插件 'LoadBehavior' 的值已更改。但是HKEY_LOCAL_MACHINE下的'LoadBehavior'的值没有变。这是预期的行为 - 普通用户无法为所有用户禁用插件。
请注意,在这种情况下,加载项将仅对当前用户禁用。
这就是为什么我建议在 运行 时禁用加载项的所有功能,而不是尝试将其关闭。在运行时你可以检查用户是否被授权加载你的插件,根据验证结果你可以决定是否加载插件的UI和其他业务逻辑(订阅到 Outlook 事件等)或不。 IE。加载项将被启用,但最终用户不会注意到这一点。
即使您将 LoadBehavior 键添加到相应的 HKCU 配置单元,下次启动 Outlook 时也会加载加载项。
我已经为 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 时。对于普通用户,它不能正常工作。
那么有没有其他方法可以实现这一点?或者我只能以管理员身份运行此代码?
您需要是本地管理员或高级用户才能修改 HKLM。普通用户没有足够的权限修改加载项的 windows registry keys 。加载项很可能已在 HKLM 配置单元中注册,对吗?
当然,对于每台机器的加载项,如果您的应用程序 运行 具有管理权限,则可以设置连接 属性。但是在启用了UAC的系统上,除了要有管理权限外,还必须提升应用进程。
您可以在 Outlook 中手动禁用加载项,甚至是每台计算机的加载项。这意味着您可以添加一个 HKCU 条目来完成它。如果我查看注册表,HKEY_CURRENT_USER 下的插件 'LoadBehavior' 的值已更改。但是HKEY_LOCAL_MACHINE下的'LoadBehavior'的值没有变。这是预期的行为 - 普通用户无法为所有用户禁用插件。
请注意,在这种情况下,加载项将仅对当前用户禁用。
这就是为什么我建议在 运行 时禁用加载项的所有功能,而不是尝试将其关闭。在运行时你可以检查用户是否被授权加载你的插件,根据验证结果你可以决定是否加载插件的UI和其他业务逻辑(订阅到 Outlook 事件等)或不。 IE。加载项将被启用,但最终用户不会注意到这一点。
即使您将 LoadBehavior 键添加到相应的 HKCU 配置单元,下次启动 Outlook 时也会加载加载项。