Be sure to check out the article GPO In Five Figures for a summary of the GPO system, this includes some information on GPO creation.

Before you can achieve anything in GPO you must have access to an IObjectManager, the "how to" on GPO Initialization covers this.

There are then two ways to create a new GPO object, but 99 percent of the time you will use just one.

  IObjectManager om = client.getObjectManager();

  IGPOMap agpm = new GPOMap(om);

The above code snippet will create a new persistent GPOMap object. You can now set properties and set it as the value of another GPOMap object's properties.

Local Object

As an optimisation, a second method allows that an object can be created local to some other GPO object.

  IGPOMap anogpm = new GPOMap(agpm);

When you create an object in this way, it is stored within the "parent" GPO object.

Apart from this storage side-effect, the object is in no sense restricted, you can pass references around to a "local" object just as validly as any other.