哪些注册表项确定Outlook配置文件

Tej*_*jas 10 registry vbscript outlook outlook-vba

我需要编写一个VBScript代码来检查outlook是使用MAPI配置文件还是使用RPC over HTTP/S配置文件.

那么任何人都可以让我知道哪个注册表项决定相同吗?

请帮忙.

小智 19

Outlook 2013中的情况发生了变化:

配置文件存储在键下:

HKEY_CURRENT_USER\Software\Microsoft\Office\<version>\Outlook\Profiles
Run Code Online (Sandbox Code Playgroud)

其中<version>一个是:

  • 办公室97 - 7.0
  • 办公室98 - 8.0
  • 办公室2000 - 9.0
  • Office XP - 10.0
  • Office 2003 - 11.0
  • Office 2007 - 12.0
  • Office 2010 - 14.0(原文如此!)
  • Office 2013 - 15.0
  • 2016年办公室 - 16.0

上面的版本信息是从这个答案中复制的.

  • 不,这是错的.仅从Outlook 2013(15)开始,每个版本存储配置文件.在此之前,配置文件位于HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles (3认同)

Aks*_*Joy 10

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
Run Code Online (Sandbox Code Playgroud)


Dmi*_*nko 5

首先,对于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,其中对于Outlook 2013,%version%为15.0;对于Outlook 2016,%version%为16.0,等等。

在低级(扩展MAPI)级别上,RPC-over-HTTP(ROH)设置由PR_PROFILE_RPC_PROXY_SERVER_FLAGS属性(0x66230003)中的ROHFLAGS_USE_ROH位确定。该属性在全局配置文件部分以及特定的Exchange存储配置文件部分中设置(因为Outlook现在在单个配置文件中支持多个Exchange帐户)。

您可以在OutlookSpy中看到数据-单击OutlookSpy功能区上的IMAPISession按钮,单击OpenProfileSession,然后{C8B0DB13-05AA-1A10-9BB0-00AA002FC45A} pbGlobalProfileSectionGuid从组合框中选择条目。

请注意,不能从VB(或.Net)使用扩展MAPI。如果可以选择使用Redemption / Profman,则可以使用以下脚本枚举所有配置文件,并检查是否使用了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
Run Code Online (Sandbox Code Playgroud)

如果您已经在运行Outlook,并且想要检查当前配置文件是否使用ROH,则可以使用RDOSessionExchangeConnectionProperties.UseROH属性:

set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
MsgBox Session.ExchangeConnectionProperties.UseROH
Run Code Online (Sandbox Code Playgroud)