J'ai besoin d'écrire un code VBScript pour vérifier si Outlook utilise le profil MAPI ou le profil RPC sur HTTP/S.
Alors, quelqu'un peut-il me dire quelle clé de registre décide de la même façon?
Veuillez aider.
Cela a changé dans Outlook 2013:
Les profils sont stockés sous des clés:
HKEY_CURRENT_USER\Software\Microsoft\Office\<version>\Outlook\Profiles
Où <version>
est l'un des suivants:
7.0
8.0
9.0
10.0
11.0
12.0
14.0
(sic!)15.0
16.0
Les informations de version ci-dessus ont été copiées de cette réponse .
Premièrement, pour Outlook 97-2010, les profils sont stockés dans HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles
.
À partir d'Outlook 2013 (qui prend en charge les installations côte à côte), les profils sont stockés dans HKEY_CURRENT_USER\Software\Microsoft\Office\%version%\Outlook\Profiles
, où% version% est 15,0 pour Outlook 2013, 16,0 pour Outlook 2016, etc.
Au niveau bas (MAPI étendu), les paramètres RPC sur HTTP (ROH) sont déterminés par le bit ROHFLAGS_USE_ROH dans la propriété PR_PROFILE_RPC_PROXY_SERVER_FLAGS (0x66230003). Cette propriété est définie dans la section de profil global ainsi que dans la section de profil de la banque Exchange particulière (car Outlook prend désormais en charge plusieurs comptes Exchange dans un seul profil).
Vous pouvez voir les données dans OutlookSpy - cliquez sur le bouton IMAPISession sur le ruban OutlookSpy, cliquez sur OpenProfileSession, sélectionnez le {C8B0DB13-05AA-1A10-9BB0-00AA002FC45A} pbGlobalProfileSectionGuid
entrée de la zone de liste déroulante.
Notez que MAPI étendu ne peut pas être utilisé à partir de VB (ou .Net). Si l'utilisation de Redemption / Profman est une option, vous pouvez utiliser le script suivant pour énumérer tous les profils et vérifier si ROH est utilisé:
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
Si vous exécutez déjà Outlook et souhaitez vérifier que le profil actuel utilise ROH, vous pouvez utiliser RDOSession .ExchangeConnectionProperties.UseROH
propriété:
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
MsgBox Session.ExchangeConnectionProperties.UseROH