Microsoft KB Archive/170461

= How to pass a license key to classes generated by #import =

Article ID: 170461

Article Last Modified on 6/18/2007

-

APPLIES TO


 * Microsoft Visual C++ 5.0 Enterprise Edition
 * Microsoft Visual C++ 5.0 Professional Edition

-



This article was previously published under Q170461



SUMMARY
This article only applies to ADO version 1.0. With ADO 1.5 and above you do not need a licence key. ADO 1.5 and above are redistributed with MDAC(Microsoft Data Access Components) package. To get the latest version of ADO, download latest version of MDAC. To download the latest version of MDAC, visit the following Microsoft Developer Network (MSDN) Web site:

http://msdn2.microsoft.com/en-us/data/aa937729.aspx

The Following Information Applies to ADO 1.0
The #import directive is used to incorporate information from a type library, but makes no provision for a license key. If you installed the OLE DB SDK or Internet Information Server 3.0, then the license key is automatically created in the registry.

However, if your application is redistributed to machines that have not had either OLE DB SDK or Internet Information Server 3.0 installed on them, you need to programmatically provide the ADO License Key. This is necessary regardless of the development environment you are using to manipulate ADO.

This article is one of a series dealing with redistribution of Microsoft Data Access Components (MDAC), including ODBC, OLE DB, ADO, RDS, the MDAC Standalone, MDAC Redistribution, and the Data Access SDK. The white paper "Redistributing Microsoft Data Access Components" presents a comprehensive overview of this subject, including a reference to the content in this Knowledge Base article. You can find this white paper in the Microsoft Developer Network at the following location:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/mdacsdk/htm/wphistory_redistributemdac.asp



MORE INFORMATION
The following is a typical #import statement: When using #import to generate classes for ADO, your code to manipulate a recordset might look like this: HRESULT       hr; _ConnectionPtr pConn; _bstr_t       bstrConnect = SysAllocString( L"driver={sql server};"                                                L"Database=pubs;"                                                L"UID= ;PWD= ;" );
 * 1) import "msado10.dll" no_namespace rename( "EOF", "adoEOF" )

hr = pConn.CreateInstance(__uuidof(Connection)); if (!FAILED(hr))

pConn->ConnectionString = bstrConnect; This will work on any machine that has had the ADO 1.0 License Key already installed. However, if the license key is not installed, this code will not work. The code sample below is functionally equivalent but demonstrates how to create an ADO object using a license key.

Sample Code
BSTR           LicKey; IClassFactory2 *pIUnknown = NULL; IUnknown       *pOuter    = NULL; HRESULT        hr; _ConnectionPtr pConn; _bstr_t        bstrConnect = SysAllocString( L"driver={sql server};"                                                 L"Database=pubs;"                                                 L"UID= ;PWD= ;" );

LicKey = SysAllocString( L"gxwaezucfyqpwjgqbcmtsncuhwsnyhiohwxz" );

//   hr = CoGetClassObject( __uuidof(Connection),                          CLSCTX_INPROC_SERVER,                          NULL,                          IID_IClassFactory2,                          reinterpret_cast(&pIUnknown) ); if( !FAILED( hr ) ) {

pIUnknown->CreateInstanceLic( pOuter,                                   NULL,                                    __uuidof(_Connection),                                    LicKey,                                    reinterpret_cast>void**> (&pConn) ); }

if( !FAILED( hr ) ) pConn->ConnectionString = bstrConnect;

SysFreeString( LicKey );

Additional query words: adoengdb

Keywords: kbcompiler kbdatabase kbhowto KB170461

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.