代码之家  ›  专栏  ›  技术社区  ›  spoulson

如何以编程方式更新Outlook联系人姓名解析顺序

  •  1
  • spoulson  · 技术社区  · 16 年前

    Address dialog

    对于大多数人来说,这将只包含“联系人”。对于企业网络,它可能还包含“全球地址列表”。问题是,在我的公司中,GAL的规模有数万个,在试图发送电子邮件时,通常会在名称解析中发生冲突,而这些冲突会传递给另一个国家的错误人员。

    相反,我想在列表的顶部放置一个单独的Exchange地址列表“X”,在检查GAL之前,首先根据我们公司的名称进行解析。然后,根据“联系人”进行解析,然后是GAL。此配置需要部署到数百台PC上。

    我已经能够在我自己的电脑上通过破解注册表项做到这一点: HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\your_profile_name\9207f3e0a3b11019908b08002b2a56c2 11023d05 .

    它包含一个REG_二进制数据结构,列出此列表项的ID。我可以根据自己的喜好重新排序,Outlook也会接受。

    GAL和“X”地址列表的ID是静态的。然而,问题是“联系人”ID显然不是静态的,可能是用户和/或计算机独有的。它的价值似乎无法在注册表中找到。这使我无法简单地将此注册表值复制到所有PC。

    3 回复  |  直到 11 年前
        1
  •  3
  •   Stephen Wrighton    16 年前

    我过去为一家公司做过这件事。它是一个.NET应用程序,在每台PC上运行,并重新排序此列表。

    这是您需要开始的地方:

    http://msdn.microsoft.com/en-us/library/bb820991.aspx

        2
  •  1
  •   spoulson    16 年前

    对于那些感兴趣的人,我在我的博客上发布了用本地C++的源创建的MAPI工具。享受

    http://www.explodingcoder.com/cms/content/programmatically-updating-outlooks-address-book-options-with-a-command-line-tool

        3
  •  0
  •   Dmitry Streblechenko    8 年前

    在扩展MAPI级别上,可以使用 IAddrBook.SetSearchPath (仅限C++或Delphi)

    如果使用Redemption是一个选项(它支持几乎所有语言,包括所有.Net语言),那么您可以使用 RDOSession.AddressBook.SearchPath 要访问或操作通讯簿搜索路径顺序,请参阅 http://www.dimastr.com/redemption/RDOAddressBookSearchPath.htm