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

如何以编程方式更新Outlook联系人姓名解析顺序,outlook,registry,exchange-server,Outlook,Registry,Exchange Server,在Outlook 2003中,打开通讯簿,选择工具->选项。您将看到地址对话框,其中显示选项“发送邮件时,请按以下顺序使用这些地址列表检查姓名:” 对于大多数人来说,这将只包含“联系人”。对于企业网络,它可能还包含“全球地址列表”。问题是,在我的公司中,GAL的规模有数万个,在试图发送电子邮件时,通常会在名称解析中发生冲突,而这些冲突会传递给另一个国家的错误人员 相反,我想在列表的顶部放置一个单独的Exchange地址列表“X”,在检查GAL之前,首先根据我们公司的名称进行解析。然后,根据“联

在Outlook 2003中,打开通讯簿,选择工具->选项。您将看到地址对话框,其中显示选项“发送邮件时,请按以下顺序使用这些地址列表检查姓名:”

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

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

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

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

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


是否有人能够按程序重新排列联系人姓名解析列表?

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

这是您需要开始的地方:


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

这是您需要开始的地方:


< P>对于那些感兴趣的人,我用我的C++语言发布了我在博客上创建的MAPI工具。享受


< P>对于那些感兴趣的人,我用我的C++语言发布了我在博客上创建的MAPI工具。享受


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


如果使用Redemption是一个选项(它支持几乎所有语言,包括所有.Net语言),您可以使用
RDOSession.AddressBook.SearchPath
访问或操作通讯簿搜索路径顺序-请参阅扩展MAPI级别的,您可以使用
IAddrBook.SetSearchPath
(仅限C++或Delphi)


如果使用赎回是一个选项(它支持几乎所有语言,包括所有.Net语言),您可以使用
RDOSession.AddressBook.SearchPath
访问或操作通讯簿搜索路径顺序-请参阅谢谢。使用这个例子,我可以构建一个本地C++项目来完成任务。谢谢。通过这个例子,我能够构建一个本地C++项目来完成任务。