Если вы добавите обработку ошибок, она не будет аварийно завершена.и у вас будет шанс диагностировать, что идет не так:
try {
ADO::_ConnectionPtr conn;
conn.CreateInstance( __uuidof( ADO::Connection ) );
conn->Open( L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\database.mdb;",
L"",
L"password",
ADO::adConnectUnspecified);
}
catch (_com_error& e) {
printf("Error:\n");
printf("Code = %08lx\n", e.Error());
printf("Message = %s\n", e.ErrorMessage());
printf("Source = %s\n", (LPCSTR) e.Source());
printf("Description = %s\n", (LPCSTR) e.Description());
}