是否有任何方法可以判断用户的Outlook客户端邮箱是否位于具有以下要求的Exchange 2010邮箱或Exchange 2013邮箱中:
我问的原因是该公司正在将邮箱从Exchange 2010迁移到Exchange 2013.我只能访问本地计算机。我想用批处理脚本编写报告。查找由Exchange 2010/2013客户端创建的注册表项或特定文件似乎是我最可行的选择。
答案 0 :(得分:1)
Exchange服务器存储的版本数据确实存储在配置文件中每个存储的配置文件数据部分中,其二进制值名为" 0102663b"在
HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\<profile name>\4cd3558f0de14d49a9023eb7f6002752
那里&#34; 15.0&#34;是Outlook版本,&#34;&lt;个人资料名称&gt;&#34;是个人资料的名称,&#34; 4cd3558f0de14d49a9023eb7f6002752&#34;是配置文件部分guid(它是动态生成的,并且在不同的机器和配置文件上会有所不同)和&#34; 0102663b&#34;对应于标记为0x663B0102的MAPI属性。
至于解析值(例如0f 00 00 00 6a 04 a5 0f),它是一个8字节的int,版本的每个部分编码为2字节int。在你的情况下,它是(0x0F,0x0,0x046A,0x0FA5)=(15,0,1130,4005)。
Microsoft建议不要直接访问配置文件数据,因为该位置会根据Outlook版本进行更改。
如果使用Redemption是一个选项,它会在RDOExchangeMailboxStore对象上公开ServerVersion属性。以下脚本将在当前配置文件中打印所有Exchange邮箱的版本(假定Application对象指向Outlook.Application对象的实例):
skPrimaryExchangeMailbox = 3
skDelegateExchangeMailbox = 4
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
for each Store in Session.Stores
If (Store.StoreKind = skPrimaryExchangeMailbox) or (Store.StoreKind = skDelegateExchangeMailbox) Then
Debug.Print Store.ServerVersion & " - " & Store.Name
End If
next