Сбой WScript/CScript при входе в систему с использованием Outlook Redemption
Предпосылки / Выпуск / Вопрос
Я только что установил Outlook 2013 (64-разрядную версию) на свою Windows 7 (64-разрядную версию) и использую версию Outlook Redemption для разработчиков, чтобы протестировать ее с Outlook 2013 после успешного использования для разработки с Outlook 2010. Я скачал новейшие файлы погашения и использовать установщик, чтобы установить и зарегистрировать библиотеки DLL.
Теперь, когда я пытаюсь запустить VBScript против Redemption, используя WScript.exe
или же CScript.exe
, Сбой 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"), но это также не имело никакого эффекта.
Я также попытался установить Redemption с помощью regsvr32.exe
,
Я гарантировал, что использую 64-битную версию WScript.exe
а также CScript.exe
,
Ради потомков я проверил, чтобы узнать, смогу ли я подключиться к MAPI с помощью Redemption. Вот код:
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, хотя я работал под управлением Outlook 2010 32-разрядной с Windows 7 64-разрядной. Для Outlook 2013 я решил перейти на 64-битную.