Мне нужно написать код VBScript, чтобы проверить, использует ли Outlook Outlook профиль MAPI или RPC через профиль HTTP/S.
Так кто-нибудь может сообщить мне, какой ключ реестра решает то же самое?
Пожалуйста, помогите.
Мне нужно написать код VBScript, чтобы проверить, использует ли Outlook Outlook профиль MAPI или RPC через профиль HTTP/S.
Так кто-нибудь может сообщить мне, какой ключ реестра решает то же самое?
Пожалуйста, помогите.
Это изменилось в Outlook 2013:
Профили хранятся под ключами:
HKEY_CURRENT_USER\Software\Microsoft\Office\<version>\Outlook\Profiles
Где <version>
является одним из следующих:
7.0
8.0
9.0
10.0
11.0
12.0
14.0
(sic!)15.0
16.0
Вышеупомянутая информация о версии была скопирована из этого ответа.
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
Во-первых, для 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