I actually do not know if OpenNetCF has a wrapper for setting APN but Windows Mobile devices (not Windows Phone) support WAP provisioning to setup GPRS Connections.
WAP XML can be applied locally for example using DMProcessConfigXML API.
Here is an example to add a GPRS entry:
<wap-provisioningdoc>
<characteristic type="CM_GPRSEntries">
<characteristic type="GPRS1">
<parm name="DestId"
value="{436EF144-B4FB-4863-A041-8F905A62C572}" />
<characteristic type="DevSpecificCellular">
<parm name="BearerInfoValid" value="1" />
<parm name="GPRSInfoValid" value="1" />
<parm name="GPRSInfoProtocolType" value="2" />
<parm name="GPRSInfoL2ProtocolType"
value="PPP" />
<parm name="GPRSInfoAccessPointName"
value="internet3.thephone-company.com" />
<parm name="GPRSInfoAddress"
value="" />
<parm name="GPRSInfoDataCompression"
value="1" />
<parm name="GPRSInfoHeaderCompression"
value="1" />
<parm name="GPRSInfoParameters" value="" />
</characteristic>
</characteristic>
</characteristic>
</wap-provisioningdoc>
See https://msdn.microsoft.com/en-us/library/aa456052.aspx for more details.
You may also setup the connections manually and then dump them using a xml query and RapiConfig.
Yes, Trevor is right, you can use ProcessConfiguration. The link also shows how to get those settings. But you need to reduce the returned query result before using the values as setting xml.