Tuesday, April 15, 2014

Outlook 2010 Crashes opening meetings

Here's a scenario we recently had reported: Machine running Outlook 2010 installs KB 2553248, and now Outlook crashes when they try to open meetings that were created using Exchange Web Services (EWS).
Here's the few other scenarios where Outlook crashes:

1) Create a Meeting request using EWS and send it to yourself. When you receive it in Outlook 2010 as a No Response Required meeting request, just selecting the meeting request crashes Outlook.
2) Opening the meeting in the Organizer's Calendar crashes Outlook.
3) If the attendee sends an acceptance, selecting the acceptance in the Explorer crashes Outlook.
4) Dismissing reminders crashes Outlook.

The issue is happening because there was a change made in Outlook which caused it to crash when it encounters a Time Zone property on a meeting which does not have a name. If we use MFCMAPI to dump out the properties of a Meeting we can see the problem is with PidLidAppointmentTimeZoneDefinitionStartDisplay.
 Notice that szKeyName is null.

<property tag = "0x80380102" type = "PT_BINARY"> <NamedPropGUID>{00062002-0000-0000-C000-000000000046} = PSETID_Appointment</NamedPropGUID> <NamedPropName>id: 0x825E=33374 = PidLidAppointmentTimeZoneDefinitionStartDisplay, dispidApptTZDefStartDisplay</NamedPropName> <Value>cb: 76 lpb: 000000000000000000000000000000000000000000000000000000000000000000000000000000</Value> <AltValue><![CDATA[............>...A...............ð...........................................]]> </AltValue> <SmartView><![CDATA[Time Zone Definition: bMajorVersion = 0x02 (2) bMinorVersion = 0x01 (1) cbHeader = 0x0006 (6) wReserved = 0x0002 (2) cchKeyName = 0x0000 (0) szKeyName = (null) cRules = 0x0001 (1) TZRule[0x0].bMajorVersion = 0x02 (2) TZRule[0x0].bMinorVersion = 0x01 (1) TZRule[0x0].wReserved = 0x003E (62) TZRule[0x0].wTZRuleFlags = 0x0002 = TZRULE_FLAG_EFFECTIVE_TZREG <Value>04:00:00.000 PM 5/5/2012</Value> <AltValue>Low: 0x1FE4C000 High: 0x01CD2AD8</AltValue> </property>

Fortunately, the fix is now available and included in the June 2012 CU for Office 2010.

If you're running into this issue you have a couple options:
1) Uninstall KB 2553248 (obviously).
2) Fix the Exchange Web Services code so that new meetings that are created do not crash Outlook.

What do I need to do to fix the existing code? The change is simple:

For Exchange Web Services Proxy code, remember to specify the Time Zone Name along with the Base Offset:

DateTime startTime = new DateTime(2012, 05, 05, 8, 00, 00, DateTimeKind.Unspecified); appointment.Start = startTime; appointment.End = startTime.AddHours(4); appointment.StartSpecified = appointment.EndSpecified = true; TimeZoneType tzUSMST = new TimeZoneType(); tzUSMST.TimeZoneName = "Atlantic Standard Time"; tzUSMST.BaseOffset = "PT4H"; appointment.MeetingTimeZone = tzUSMST;
For Exchange Web Services Managed API provide the TimeZone like below:

appointment.StartTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Atlantic Standard Time");

No comments:

Post a Comment