11

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

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

请帮忙。

4

3 回答 3

19

这在 Outlook 2013 中发生了变化:

配置文件存储在键下:

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

<version>以下内容之一在哪里:

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

上面的版本信息是从这个答案复制而来的。

于 2013-12-25T02:14:54.787 回答
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
于 2012-11-30T10:04:46.607 回答
6

首先,对于 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% 对于 Outlook 2013 是 15.0,对于 Outlook 2016 是 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

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

set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
MsgBox Session.ExchangeConnectionProperties.UseROH
于 2015-09-03T15:49:56.097 回答