Class initializes ArcObject components runtime environment. This class must be the first ArcObject created.


The AoInitialize object must be used by developers to initialize each application with a suitable license(s) in order for it to run successfully on any machine it is deployed on to. License configuration must be undertaken at application start time, before any ArcObjects are accessed. Failure to do so will result in application errors.

All applications need to be configured with a license except when the application is not a stand-alone executable, i.e., if it's a dll that will be incorporated into an application that will itself perform the license configuration.

There are two types of license to consider when initializing an application, esriLicenseProductCodes and esriLicenseExtensionCodes, if an application uses any of the ArcGIS extensions. These licenses can be Engine Single Use, Desktop Single Use, or Desktop Concurrent licenses.

  • Engine Single Use provides access to either the ArcGIS Engine or Engine with GeoDatabase Editing licenses.
  • Desktop Concurrent licenses provide access to the Desktop Concurrent Basic, Standard, and Advanced licenses.
  • Desktop Single Use licenses use the same technology as Desktop Concurrent licenses and provide access to Single Use Basic, Standard, and Advanced licenses. There is no mechanism for a developer to differentiate between a Single Use and a Desktop Concurrent license so they should be treated as the same.

Initialization of an application with a license must be performed in the following order:

  1. Check that the product license is available with the IsProductCodeAvailable method.
  2. Check that extension licenses are available (if required) with the IsExtensionCodeAvailable method.
  3. Initialize the application with the product license.
  4. As required, check out and in the extension(s) by calling the CheckOutExtension and CheckInExtension methods.
  5. Shutdown the application.

Once an application has been initialized with a license, it cannot be re-initialized (with a new license); an application is initialized with a license for the duration of its life. When initializing an application with a license the following must be considered:

  • The types of product license that the application can run with. For example, an enterprise geodatabase editing application will not be able to run with an ArcGIS Engine license or a Desktop Basic license. However, it will be able to run with an ArcGIS Engine GeoDatabase Editing license, a Desktop Standard, or a Desktop Advanced license.
  • The types of product license available to the application. For example, an application that can be run with an ArcGIS Engine license will also run with a Desktop Basic, Standard, and Advanced license. However, it may not be desirable to consume more than the minimum required license, as doing so would lock the license for the lifetime of the application.

Using a Desktop Basic license on an ArcGIS Engine application will give you access to all the functionality available to a standard Engine license. Likewise, using a Descktop Standard license on an ArcGIS Engine application will give you access to all the functionality available to an Engine license with GeoDatabase Editing.

Supported Platforms

Windows, Solaris, Linux

Extended Error Information

Use the ISupportErrorInfo method InterfaceSupportsErrorInfo to determine if the object supports extended error information. If the object supports extended error info, VC++ developers should use the OLE/COM IErrorInfo interface to access the ErrorInfo object. Visual Basic developers should use the global error object Err to retrieve this extended error information.


Interfaces Description
IAoInitialize Provides access to members that initialize licensing for ArcGIS Desktop, Engine, and Server.
ILicenseInformation Provides access to retrieve the name for license product code.

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.