Yo probaría la confirmación de la existencia del fichero "as is", no confiando a la clase Settings su existencia.
Es decir, Settings["PrimeraVez/abiertoAnes"] = "si" es algo redundante cuando resulta que si no lo ha abierto el fichero no existe.
Yo intentaría algo así como:
PUBLIC SUB Form_open()
dim frm as form
IF not Exist(Settings.Path &/ Application.Name & ".conf") THEN
cad = "[VariablesEntorno]\n"
cad &= "Variable=\"valor por defecto\" \n"
cad &= "otravariable=\"otro valor" \n"
cad &= "resto de las variables de entorno=\"resto de los valores\" \n"
File.Save(Settings.path &/ Application.Name & ".conf", cad)
frm = new formulario_de_rellenar_los_parametros
frm.showmodal
ENDIF
Resto de procedimientos...
dim frm as form
IF not Exist(Settings.Path &/ Application.Name & ".conf") THEN
cad = "[VariablesEntorno]\n"
cad &= "Variable=\"valor por defecto\" \n"
cad &= "otravariable=\"otro valor" \n"
cad &= "resto de las variables de entorno=\"resto de los valores\" \n"
File.Save(Settings.path &/ Application.Name & ".conf", cad)
frm = new formulario_de_rellenar_los_parametros
frm.showmodal
ENDIF
Resto de procedimientos...
Es decir las cosas de una en una. A lo mejor es dar vueltas para conseguir lo mismo, pero puedes ver en cada momento lo que está ocurriendo.
A parte de eso puede que el fallo lo tengas en la función funciones.init, que no especificas qué hace.
No sé si te ayudo o te lío... pero así no te aburres.
Saludos