在 .NET 中使用 Office Name.dll 作为 COM 对象

Using Office Name.dll as a COM object in .NET

我正在尝试将 MS Office Name.dll 用作 COM 对象。 我在这些链接中找到了一些帮助,可以在网络浏览器中执行类似的操作:

https://msdn.microsoft.com/en-us/library/office/ms455335(v=office.14).aspx

http://mcgivery.com/displaying-a-users-lync-status-using-namectrl/

http://blogs.msdn.com/b/tomholl/archive/2013/03/02/integrate-lync-into-your-intranet-sites-using-the-namectrl-plug-in.aspx

name.dll 基本上允许我从 MS Lync 获取状态信息并显示名片。

我能够成功创建一个测试 Windows 引用 name.dll 的表单应用程序。 VisualStudio 为我创建了一个 Interop,我可以使用 class NameCtrl。

该项目运行良好,我的测试应用程序能够显示名片,但只能在使用旧版本的 Office 2010 时显示。 升级到 Office 2010 SP2 后,它不再工作了。使用 Office 2013 时,它从来没有用过。

其实我可以实例化对象成功,但是对象的属性'PresenceEnable'一直是0,尝试显示名片时抛出异常"E_ACCESDENIED 0x80070005"。在这些不工作的环境中,使用网络浏览器 (IE/ Firefox) 仍然可以正常工作。

有谁知道如何让它发挥作用? 为什么它只适用于旧版本的 Office 2010 而停止使用较新版本?

我和一位 Microsoft Office 工程师谈过,他告诉我这个 dll 不应该以这种方式使用:它只能在网络浏览器中使用。