背景/问题/问题
我刚刚在我的Windows 7(64位)计算机上安装了Outlook 2013(64位),并且我使用Outlook Redemption的开发人员版本在成功使用Outlook 2013进行开发后使用Outlook 2013对其进行测试我下载了最新的Redemption文件,并使用安装程序安装并注册了DLL。
现在,当我尝试使用WScript.exe
或CScript.exe
针对Redemption运行VBScript时,WScript / CScript会崩溃。
有谁知道为什么WScript / CScript会崩溃(详见下文)?
代码
这是我的代码:
Set Session = CreateObject("Redemption.RDOSession")
WScript.Echo "Session created."
WScript.Echo Session.Version
Session.Logon("Outlook")
WScript.Echo "Logged on with default profile."
Session.Logoff
错误
代码到达Session.Logon("Outlook")
时失败。这是我收到的错误消息和一些其他细节:
Microsoft Windows Based Script Host has stopped working
Problem details
-------------------
Problem Event Name: APPCRASH
Application Name: WScript.exe
Application Version: 5.8.7601.18283
Application Timestamp: 5258a6e6
Fault Module Name: mso.dll
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 567a40e6
Exception Code: c0000005
Exception Offset: 000000000135991f
OS Version: 6.1.7601.2.1.0.256.4
疑难解答
我尝试重命名MSO.dll并修复Outlook,但这没有任何效果。我也尝试重新创建默认配置文件(称为“Outlook”),但这也没有效果。
我还尝试使用regsvr32.exe
安装Redemption。
我确保我使用的是64位版本的WScript.exe
和CScript.exe
。
为了后人,我测试了一下我是否可以通过Redemption连接到MAPI。这是代码:
Set Outlook = CreateObject("Outlook.Application")
Set Session = Outlook.GetNamespace("MAPI")
Session.Logon("Outlook")
Set rdoSession = CreateObject("Redemption.RDOSession")
WScript.Echo "RDOSession created."
WScript.Echo rdoSession.Version
rdoSession.MAPIOBJECT = Session.MAPIOBJECT
WScript.Echo "RDOSession MAPIOBJECT created."
rdoSession.Logoff
Session.Logoff
以上代码在WScript.exe
和CScript.exe
中都可以正常工作,可能是因为Outlook对象模型用于创建Outlook会话,而Redemption只是挂钩。
注意 - 我不能将最后一段代码用于我计划进行的操作,因为如果我的机器被锁定或者我正在使用上述代码将无法在Windows任务计划程序中运行注销(仅在我登录时才有效)。我应该指出,第一个代码片段在Outlook 2010中运行良好,尽管我使用Windows 7 64位运行Outlook 2010 32位。对于Outlook 2013,我决定转向64位。