Microsoft Windows 7 Service Pack 1 Breaks Backward Compatibility with ActiveX Data Objects (ADO)

The recent release of Windows 7, Service Pack 1 (and Windows 2008 R2) breaks backward compatibility for Microsoft ActiveX Data Objects (ADO). That means if your .NET, Visual Basic 6, VBA/Office, C++ or other program includes an ADO library reference, and you compile your application or COM object on a Windows 7 SP1 machine, it will not run when deployed to an earlier environment containing the existing ADO object.

An error you may encounter is: Unable to cast COM object of type ‘System.__ComObject’ to interface type ‘ADODB.Connection’.

Basically, the interface IDs for files like MSADO28.tlb and MSADO15.dll have changed. For more information on this, read the Microsoft KnowledgeBase article 2517589 entitled An ADO application that is re-compiled on a Windows 7 Service Pack 1-based computer does not run on down-level operating systems

This is not an issue in Visual Studio .NET if you are using ADO.NET. But if you are using ADO, it is an issue. For .NET specific issues, see KnowledgeBase article 840667: You receive unexpected errors when using ADO and ADO Multidimensional in a .NET Framework application

Note that applications built on the original version will run fine on Windows 7, SP1. You just can’t go backwards. Watch out!