我需要编写一个VBScript代码来检查outlook是使用MAPI配置文件还是使用RPC over HTTP / S配置文件。
那么有人可以告诉我哪个注册表项决定相同吗?
请帮忙。
答案 0 :(得分:19)
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
(原文如此!)15.0
16.0
以上版本信息是从this answer复制的。
答案 1 :(得分: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
答案 2 :(得分: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
中,其中%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,则可以使用RDOSession。ExchangeConnectionProperties.UseROH
属性:
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
MsgBox Session.ExchangeConnectionProperties.UseROH