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

发布于 2024-07-06 21:39:39 字数 859 浏览 5 评论 0原文

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

地址对话框

对于大多数人来说,这将仅包含“联系人”。 对于企业网络,它可能还包含“全局地址列表”。 问题是,在我的公司中,GAL 有数万之多,并且在尝试发送电子邮件时,名称解析中经常发生冲突,并且将电子邮件发送给另一个国家/地区的错误人员。

相反,我想在该列表的顶部放置一个单独的 Exchange 地址列表“X”,以便在检查 GAL 之前首先解析我们自己公司中的名称。 然后,解决“联系人”问题,然后解决“GAL”问题。 此配置需要部署到数百台 PC。

我已经能够通过破解注册表项在我自己的电脑上执行此操作: HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\your_profile_name\9207f3e0a3b11019908b08002b2a56c2,值 11023d05

它包含一个 REG_BINARY 数据结构,列出了该列表中项目的 ID。 我可以根据自己的喜好重新排序,并且 Outlook 会接受它。

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

有没有人能够以编程方式重新排序联系人姓名解析列表?

When in Outlook 2003, open the Address Book, select Tools->Options. You get the address dialog showing the option "When sending mail, check names using these address lists in the following order:"

Address dialog

For most people, this will contain only "Contacts". For corporate networks, it'll probably also contain "Global Address List". The problem is that in my company the GAL is many tens of thousands large, and it's common that conflicts occur in name resolution when attempting to send email and it goes to the wrong person in another country.

Instead, I would like to place a separate Exchange address list "X" at the top of that list, to first resolve against names in our own company before checking the GAL. Then, resolve against "Contacts", then GAL. This configuration would need to be deployed to many hundreds of PCs.

I've been able to do this on my own PC by hacking registry key:
HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\your_profile_name\9207f3e0a3b11019908b08002b2a56c2, Value 11023d05.

This contains a REG_BINARY data structure that lists the IDs of the items of this list. I can reorder them to my liking and Outlook accepts it.

The IDs of the GAL and "X" address list are static. However, the problem is that the "Contacts" ID is apparently not static, perhaps unique to the user and/or computer. Its value appears to be undiscoverable in the registry. This prevents me from simply copying this registry value to all PCs.

Has anyone been able to progammatically reorder the contact name resolution list?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

信仰 2024-07-13 21:39:39

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

这是您需要开始的地方:

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

I have done this for a company in the past. It was a .NET application, that ran on every PC and reordered this listing.

This is where you need to start:

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

孤独陪着我 2024-07-13 21:39:39

对于那些感兴趣的人,我在我的博客上发布了我创建的 MAPI 工具,其中包含本机 C++ 的源代码。 享受。

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

For those interested, I published the MAPI tools I created on my blog with the source in native C++. Enjoy.

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

黎歌 2024-07-13 21:39:39

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

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

On the Extended MAPI level, you can use IAddrBook.SetSearchPath (C++ or Delphi only)

If using Redemption (I am its author) is an option (which supports just about every language, including all .Net languages), you can use RDOSession.AddressBook.SearchPath to access or manipulate the address book search path order - see http://www.dimastr.com/redemption/RDOAddressBookSearchPath.htm

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文