none
Configuraciones para todos los usuarios RRS feed

  • Pregunta

  • Tengo una aplicación en vb.net que usa my.setting para almacenar algunos parámetros que el usuario puede modificar (margenes y esas cosas) pero el seteo solo queda almacenado para el usuario actual de Windows. Si creo otro usuario y ejecuto el sistema, se inicia con todos los valores que asigné por defecto. Como puedo hacer para que estos parámetros sean comunes a todos los usuarios?

    Muchas gracias!

    domingo, 8 de julio de 2018 15:08

Respuestas

  • Con en My.Setting corriente no se puede hacer. Hay Settings de dos tipos: "User" y "Application".

    Los de "user", como ya has descubierto, salvan una copia distinta por cada usuario. Esto está hecho aposta: se trata de que cada usuario pueda tener, por ejemplo, sus propios márgenes, y que no se le cambien cuando otro usuario cambia los suyos.

    Los de "application" son comunes a todos los usuarios. Se usan por ejemplo, para una cadena de conexión a base de datos, que todos los usuarios tienen que compartir una vez ha sido configurada. La idea de estos settings es que los usuarios no los pueden cambiar, son de solo-lectura para los usuarios. Estos settings los tiene que cambiar un Administrador, editando el fichero .config que está en la misma carpeta del ejecutable del programa. Por supuesto, dicha carpeta normalmente estará bajo "Archivos de programa" y será de solo-lectura para los usuarios no administradores, por lo que no podrían cambiar los settings de Application ni siquiera aunque el My.Settings lo soportase.

    Así que, si realmente necesitas la funcionalidad de que un usuario pueda cambiar "algo" y que los demás lo vean, no puedes usar para esto el My.Settings. Tendrás que recurrir a salvar esa información en alguna ubicación común, tal como una base de datos, o un fichero en disco que hayas creado en una carpeta sobre la cual hayas otorgado permiso de escritura a todos los usuarios.

    • Marcado como respuesta Eber_olav domingo, 8 de julio de 2018 18:48
    domingo, 8 de julio de 2018 15:38

Todas las respuestas

  • Con en My.Setting corriente no se puede hacer. Hay Settings de dos tipos: "User" y "Application".

    Los de "user", como ya has descubierto, salvan una copia distinta por cada usuario. Esto está hecho aposta: se trata de que cada usuario pueda tener, por ejemplo, sus propios márgenes, y que no se le cambien cuando otro usuario cambia los suyos.

    Los de "application" son comunes a todos los usuarios. Se usan por ejemplo, para una cadena de conexión a base de datos, que todos los usuarios tienen que compartir una vez ha sido configurada. La idea de estos settings es que los usuarios no los pueden cambiar, son de solo-lectura para los usuarios. Estos settings los tiene que cambiar un Administrador, editando el fichero .config que está en la misma carpeta del ejecutable del programa. Por supuesto, dicha carpeta normalmente estará bajo "Archivos de programa" y será de solo-lectura para los usuarios no administradores, por lo que no podrían cambiar los settings de Application ni siquiera aunque el My.Settings lo soportase.

    Así que, si realmente necesitas la funcionalidad de que un usuario pueda cambiar "algo" y que los demás lo vean, no puedes usar para esto el My.Settings. Tendrás que recurrir a salvar esa información en alguna ubicación común, tal como una base de datos, o un fichero en disco que hayas creado en una carpeta sobre la cual hayas otorgado permiso de escritura a todos los usuarios.

    • Marcado como respuesta Eber_olav domingo, 8 de julio de 2018 18:48
    domingo, 8 de julio de 2018 15:38
  • Muchas gracias Alberto, confirmaste lo que pensaba en cuanto a my.setting.

    Así voy a optar por la vieja escuela, usando un config.ini que quedará junto al ejecutable.

    Un saludo

    domingo, 8 de julio de 2018 18:47
  • [...] optar por la vieja escuela, usando un config.ini que quedará junto al ejecutable. [...]

    Esa escuela es demasiado vieja. Eso se podía hacer en los tiempos en los que el usuario tenía permisos en todas las carpetas. Pero en la actualidad, si se siguen los estándares, el programa se instala en una subcarpeta bajo "Archivos de programa". Y esa carpeta es de solo-lectura para los usuarios, e incluso para el Administrador cuando está activado el UAC.  E incluso aunque no se sigan los estándares, de todas maneras por razones de seguridad no se debería permitir escribir en la carpeta del ejecutable. Por lo tanto, si el .ini lo dejas junto al ejecutable, no podrá cumplir la función que esperabas. Es preferible que lo ubiques en otro sitio.
    domingo, 8 de julio de 2018 19:13
  • Gracias por el consejo.

    Podría ser una alternativa usando el registro de Windows también.

    domingo, 8 de julio de 2018 20:16