2008-10-10 6 views
1

Когда в Outlook 2003 откройте адресную книгу, выберите Сервис-> Параметры. Вы получите диалоговое окно с указанием адреса параметра «При отправке почты, проверьте имена, используя эти списки адресов в следующем порядке:»Как программно обновить порядок разрешения имен контактов Outlook

Address dialog

Для большинства людей это будет содержать только «Контакты». Для корпоративных сетей он, вероятно, также будет содержать «Глобальный список адресов». Проблема в том, что в моей компании GAL много десятков тысяч больших, и обычно бывает, что конфликты возникают при разрешении имен при попытке отправить электронную почту, и это идет не тому человеку в другой стране.

Вместо этого я хотел бы разместить отдельный список адресов Exchange «X» в верхней части этого списка, чтобы сначала разрешить имена в нашей собственной компании перед проверкой GAL. Затем разрешите «Контакты», затем GAL. Эта конфигурация должна быть развернута на многие сотни компьютеров.

Я смог сделать это на своем собственном компьютере, взломав ключ реестра: HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\your_profile_name\9207f3e0a3b11019908b08002b2a56c2, Value 11023d05.

Это содержит структуру данных REG_BINARY, в которой перечислены идентификаторы элементов этого списка. Я могу переупорядочить их по своему вкусу, и Outlook принимает его.

Идентификаторы списка адресов GAL и "X" являются статическими. Однако проблема заключается в том, что идентификатор «Контакты», по-видимому, не является статичным, возможно, уникальным для пользователя и/или компьютера. Его значение, как представляется, не может быть обнаружено в реестре. Это не позволяет мне просто копировать это значение реестра на все ПК.

Кто-нибудь мог прогаммически изменить порядок имен имен контактов?

ответ

3

Я сделал это для компании в прошлом. Это было приложение .NET, которое запускалось на каждом ПК и переупорядочивало этот список.

Это где вы должны начать:

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

+0

Спасибо. Используя этот пример, я смог создать собственный проект на C++, чтобы выполнить эту работу. – spoulson 2008-10-15 17:53:28

0

На расширенном уровне MAPI, вы можете использовать IAddrBook.SetSearchPath (C++ или Delphi только)

При использовании Redemption вариант (который поддерживает почти каждый язык, включая все языки .Net), вы можете использовать RDOSession.AddressBook.SearchPath для доступа к порядку поиска адресной книги - см. http://www.dimastr.com/redemption/RDOAddressBookSearchPath.htm