Privilegios / problema del propietario al escribir en C: \ ProgramData \

Como se indicó en el archivo de configuración de escritura en C: \ Archivos de progtwig (x86) \ MiAplicación \ myapp.cfg, en comparación con el privilegio de administrador , no es una buena idea escribir un archivo de configuración en C:\Program Files (x86)\MyApp\myapp.cfg .

En lugar de esto, mi software ahora guarda sus datos en un subdirectorio de %ALLUSERSPROFILE% (por ejemplo: C:\ProgramData\MyApp\myapp.cfg en Win7)

[Uso myfile = open(filename, 'a') en Python para hacer esto.]

Ahora encuentro un problema con este archivo:

  • Instalé el software con el User A y lo ejecuté, y luego se escribió el archivo C:\ProgramData\MyApp\myapp.cfg .
  • Luego, cambié de usuario a User B y volví a ejecutar mi software: ahora se muestra un error: el User 2 no tiene derecho a escribir en C:\ProgramData\MyApp\myapp.cfg ( Permission denied ).

¿Por qué? ¿No es %ALLUSERSPROFILE% un lugar que todos los usuarios pueden escribir? Cómo resolver este problema ?

No, C:\ProgramData , también FOLDERID_ProgramData como FOLDERID_ProgramData , tiene una configuración de seguridad restringida. Los usuarios estándar pueden crear archivos allí. Pero estos archivos están, de forma predeterminada, protegidos de modo que solo el usuario que creó el archivo pueda modificar posteriormente el archivo.

La solución recomendada es que su instalador cree un subdirectorio de C:\ProgramData para su almacenamiento compartido. Y ese subdirectorio debe recibir una ACL permisiva por parte del progtwig de instalación. Eso es lo que otorga el acceso deseado a todos los usuarios estándar.

Me pregunto si realmente necesitas compartir datos escribibles. Normalmente espero que la configuración compartida sea algo que se especifique en el momento de la instalación y que los administradores modifiquen con poca frecuencia. La mayoría de los datos de configuración suelen ser por usuario.

    Intereting Posts