Pregunta

Estoy intentando escribir en un archivo que tiene los siguientes atributos: oculto y solo lectura.Mi proceso debería poder escribir en él, pero otros procesos tienen acceso de solo lectura.

El procedimiento que estoy siguiendo es:

  1. Verifique si el archivo existe
  2. Elimine los atributos existentes en el archivo, es decir, ocultos y de solo lectura
  3. Termine de escribir en el archivo
  4. Aplicar los atributos (ocultos y de solo lectura) al archivo.

Sé que esta no es la forma recomendada de usar los atributos de archivo y escribir en un archivo oculto.¿Existe una forma mejor de realizar mi tarea?

Gracias de antemano.

¿Fue útil?

Solución

Sí, haga que su aplicación se haga pasar por una cuenta especial.Otorgue permisos de escritura de archivos a esa cuenta en ese archivo y acceso de lectura a todas las demás cuentas.

La forma más sencilla de ejecutar en el contexto de otro usuario es presionar Mayús y hacer clic con el botón derecho en el archivo exe, seleccionar "Ejecutar como un usuario diferente".

Con un servicio de Windows, cambia la cuenta de ejecución de las propiedades del servicio.Lo mismo ocurre con las tareas programadas de Windows.

Para cambiar la cuenta en ejecución "en medio del proceso", necesita trabajar un poco más, busque un buen artículo sobre el tema, como http://www.codeproject.com/Articles/4051/Windows-Impersonation-using-C .

Otros consejos

Como señala @Albin, la forma correcta de abordar el problema de acceso es con permisos de archivo, no atributos.

Si el archivo está oculto porque no desea que los usuarios puedan ver su contenido, sugeriría que un mecanismo de cifrado simple (relativamente ligero) sería una mejor solución que el atributo oculto.

Tenga en cuenta que los atributos ocultos y de solo lectura pueden ser desactivados por un usuario con privilegios suficientes.Y, por lo general, cualquiera puede activar la función "mostrar archivos y carpetas ocultos" en el Explorador.

No es necesario eliminar el atributo oculto.Sin embargo, no conozco otra solución con la de solo lectura.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top