Какие ключи реестра определяют профиль Outlook

Мне нужно написать код VBScript, чтобы проверить, использует ли Outlook Outlook профиль MAPI или RPC через профиль HTTP/S.

Так кто-нибудь может сообщить мне, какой ключ реестра решает то же самое?

Пожалуйста, помогите.

Ответ 1

Это изменилось в Outlook 2013:

Профили хранятся под ключами:

HKEY_CURRENT_USER\Software\Microsoft\Office\<version>\Outlook\Profiles

Где <version> является одним из следующих:

  • Офис 97 - 7.0
  • Office 98 - 8.0
  • Office 2000 - 9.0
  • Office XP - 10.0
  • Office 2003 - 11.0
  • Office 2007 - 12.0
  • Office 2010 - 14.0 (sic!)
  • Офис 2013 - 15.0
  • Офис 2016 - 16.0

Вышеупомянутая информация о версии была скопирована из этого ответа.

Ответ 2

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook


HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Simple MAPI-CMC

Ответ 3

Во-первых, для Outlook 97-2010 профили хранятся в HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles.

Начиная с Outlook 2013 (который поддерживает бок о бок установки), профили хранятся в HKEY_CURRENT_USER\Software\Microsoft\Office\%version%\Outlook\Profiles, где% version% составляет 15.0 для Outlook 2013, 16.0 для Outlook 2016 и т.д.

На уровне низких (расширенный MAPI) параметры RPC-over-HTTP (ROH) определяются битом ROHFLAGS_USE_ROH в свойстве PR_PROFILE_RPC_PROXY_SERVER_FLAGS (0x66230003). Это свойство задается в разделе глобального профиля, а также в отдельном разделе профиля магазина Exchange (поскольку Outlook теперь поддерживает несколько учетных записей Exchange в одном профиле).

Вы можете увидеть данные в OutlookSpy - нажмите кнопку IMAPISession на ленте OutlookSpy, нажмите OpenProfileSession, выберите запись {C8B0DB13-05AA-1A10-9BB0-00AA002FC45A} pbGlobalProfileSectionGuid из комбо коробка.

Обратите внимание, что расширенный MAPI не может использоваться из VB (или .Net). Если вы используете Redemption/Profman, это опция, вы можете использовать следующий script для перечисления всех профилей и проверки использования ROH:

  PR_PROFILE_RPC_PROXY_SERVER_FLAGS  = &H66230003
  ROHFLAGS_USE_ROH = 1

  set Profiles=CreateObject("ProfMan.Profiles")
  for i = 1 to Profiles.Count
    set Profile = Profiles.Item(i)
    set GlobalProfSect = Profile.GlobalProfSect
    Debug.Print "Profile: " & Profile.Name & " ------"
    flags = GlobalProfSect.Item(PR_PROFILE_RPC_PROXY_SERVER_FLAGS)
    If TypeName(flags) = "Long" Then
      if (flags And ROHFLAGS_USE_ROH) = ROHFLAGS_USE_ROH Then
        Debug.Print "   ROH is used"
      Else
        Debug.Print "   ROH is not used"
      End If
    Else
      Debug.Print "   No PR_PROFILE_RPC_PROXY_SERVER_FLAGS"
    End If
  next

Если вы уже используете Outlook и хотите проверить, использует ли текущий профиль ROH, вы можете использовать RDOSession. ExchangeConnectionProperties.UseROH свойство

set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
MsgBox Session.ExchangeConnectionProperties.UseROH