Esto en particular no lo comparto del todo. En su momento nosotros hacíamos esto de cambiar la impresora predeterminada del sistema, pero el problema es que distintas aplicaciones pueden tener distintas preferencias de impresión en distintas impresoras, y si cada aplicación cambia la impresora predeterminada del sistema, puede afectar a las aplicaciones que justamente impriman en la predeterminada, que originalmente puede ser una distinta de la que el usuario elija, lo que puede traer problemas.
Un ejemplo:
Se puede tener como impresora predeterminada una de matriz de puntos porque el programa de facturación es muy antiguo (DOS) y no permite seleccionar impresora, por lo que siempre imprime en la predeterminada del sistema para la facturación o lo que sea.
Si luego viene otro programa que pudiendo cambiar solo su propio destino de impresión va y cambia la preferencia completa del sistema, entonces va a hacer que el programa de facturación que requiere la impresora de matriz de puntos termine imprimiendo en la LaserJet que no permite poner papel carbónico, y así como este ejemplo varios mas. Además esto es casi tan invasivo como que cada programa cambie la resolución del monitor para que se vea mejor.
En mi experiencia FoxPro maneja perfectamente su preferencia de impresión local para tanto para la impresión con "?" como de los distintos comandos que permiten imprimir (LIST, REPORT, etc), tanto local como en red, que es donde suelo usarlo.
Sobre los problemas que comentás, habría que ver exactamente cada caso, porque nosotros tuvimos problemas que luego pudimos ir solucionando, y normalmente estos problemas se daban por la inexperiencia de algunas personas o por manejos muy raros de la impresión en sí.
Por ejemplo, la impresora predeterminada de Windows se obtiene con SET("PRINTER",2), y la predeterminada de FoxPro (la que se setea con SET PRINTER TO NAME <Ubicación>) se obtiene con SET("PRINTER",3)
Si la impresora predeterminada de la aplicación se suele guardar como parte de la configuración en una tabla o TXT, antes de cada impresión es conveniente hacer este SET PRINTER TO NAME <NombreGuardado> y ese nombre se debió obtener en algún momento con GETPRINTER(), ya que tiene no solo el nombre de la impresora, sino la ruta completa de red hasta ella.
Saludos.-