【问题标题】:How to Detect if Office 365 web addin is installed or not?如何检测是否安装了 Office 365 Web 插件?
【发布时间】:2022-04-24 02:17:56
【问题描述】:

我们有一个桌面应用程序,希望与它集成 Office 365 日历。我们将通过在 office 365 中授权应用程序来让我们的用户表示同意。我想知道我是否可以使用任何特定的权限和/或 api 来帮助我们了解我们的 office 365 office.js 插件是否由该用户安装。这非常适用于 VSTO 插件,因为我们可以从系统注册表中获取信息,但是,由于 Office 365 插件安装在云上,因此找不到此类注册表,我们将无法知道。

【问题讨论】:

    标签: outlook office365 outlook-addin exchangewebservices office365api


    【解决方案1】:

    Exchange 将为每个已安装的 Web 插件在名为 WebExtAddins 的特殊文件夹中创建一个子文件夹。该文件夹与其他特殊文件夹(例如收件箱)处于同一级别,但处于隐藏状态。您可以在OutlookSpy(我是它的作者)中看到该文件夹​​(及其子文件夹) - 单击 OutlookSpy 功能区上的 IMsgStore 按钮,单击“打开文件夹”,双击名为 WebExtAddins 的文件夹。

    2022 年 4 月更新 - Outlook 似乎不再使用 WebExtAddins 文件夹。相反,Web 插件列表存储在收件箱文件夹中邮件类别为"IPM.Configuration.ExtensionMasterTable" 的隐藏(关联)邮件中。该列表存储在PR_ROAMING_XMLSTREAM 二进制属性中。该属性的格式没有记录。

    在 EWS 中,可以使用 GetAppManifests 操作检索已安装插件的列表。如果您使用的是 Outlook 对象模型或扩展 MAPI,则唯一的选择是解析该 blob。

    对于这种特殊情况(确定是否安装了 Web 插件),插件自定义存储将位于收件箱文件夹中的隐藏(关联)消息中,邮件类别为 "IPM.Configuration.ClientExtension.<guid>",其中 <guid> 是您的插件的图形用户界面。您应该能够使用MAPIFolder.GetStorage("IPM.Configuration.ClientExtension.<guid>", olIdentifyByMessageClass) 访问隐藏的消息(其中MAPIFolder 是从Namespace.GetDefaultFolder(olFolderInbox) 检索的)

    【讨论】:

    • 当我尝试通过 Outlook Spy 访问文件夹“WebExtAddin”时,它不可见。另外,是否可以使用 Graph API 来查看这些隐藏文件夹。
    【解决方案2】:

    现在好像没有什么好办法可以直接查。正如您所说,Office 365 插件安装在云端。因为它通过一个单独的浏览器进程(如 IE)运行。加载插件后,我们通常会在进程管理器中看到两个 IE 进程。这里有一个细节。如果您的 Office 是 32 位的,那么其核心进程将是 32 位的。可以看到,如果加载多个插件,它使用的内存会逐渐增加。但是,这仍然是一个过程。

    截图:

    另外,如果你的 Windows 是 64 位的,它会创建另一个 64 位的 IE 进程,这实际上是一个调用关系。从下图中可以看出,32位进程实际上是在调用64位进程。

    【讨论】:

      猜你喜欢
      • 2019-07-29
      • 2011-02-25
      • 2015-04-18
      • 1970-01-01
      • 2012-09-22
      • 2022-10-17
      • 1970-01-01
      • 2010-11-11
      • 2016-12-18
      相关资源
      最近更新 更多