web-dev-qa-db-fra.com

Quelles clés de registre déterminent le profil Outlook

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.

10
Tejas

Cela a changé dans Outlook 2013:

Les profils sont stockés sous des clés:

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

<version> est l'un des suivants:

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

Les informations de version ci-dessus ont été copiées de cette réponse .

19
robotox

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
5