2010-10-15 12 views
9

Quiero guardar algunos archivos y editarlos para mi software en común de datos de aplicación bajo Windows 7.Windows 7 no me permite editar archivos en la carpeta Datos de programa común

No sé por qué Windows 7 doesn' Permitir que mi software cambie los archivos a menos que los ejecute como administrador.

¿Dónde puedo almacenar mis archivos, por lo que no requerirá permiso de administrador?

+0

¿Qué carpeta común? –

+0

@Henk: CommonApplicationData – Ata

Respuesta

6

Debe almacenar los datos de la aplicación en una subcarpeta en Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);. Tenga en cuenta que esta carpeta es específica del usuario.

Los usuarios que no son administradores no tienen permiso para escribir en la carpeta CommonApplicationData, porque esa carpeta no pertenece a usuarios específicos.

Tenga en cuenta que también puede almacenar su configuración utilizando la clase de configuración. Para hacerlo, agregue Nuevo elemento a su proyecto, elija "Archivo de configuración". Esto es apropiado para configuraciones básicas como cadenas y números.

3

Debe usar la elevación para modificar esos archivos, debido al Control de acceso del usuario. Echar un vistazo a este artículo de MSDN para más detalles: MSDN article about UAC

Si no está seguro de cómo hacer esto en C#, aquí está un artículo: Article about requesting elevation in C#

+0

+0: Solicitar elevación solo para guardar la configuración de la aplicación es una mala idea. – Brian

+0

elevación no es necesaria para escribir datos comunes de aplicaciones ... Pero la aplicación debe ejecutarse dentro de la cuenta de administrador .... –

3

Algunas carpetas están restringidas a partir de Windows 7, estas carpetas no debe tocarse a menos que esté instalando, desinstalando o parcheando. Por favor, consulte my answer that you accepted from earlier today es exactamente el mismo caso.

Si tiene varias aplicaciones que necesitan para editar los mismos archivos deben ser almacenados en

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) 

System.Environment.SpecialFolder.CommonProgramFiles (la carpeta que creo que está tratando de escribir a) es de sólo lectura a menos que esté elevada.

lea this article desde MSDN explica dónde debe guardar los datos y cómo utilizar las diversas carpetas correctamente. Mi solución es la primera en su lista, para resumir:

Debe crear una carpeta mientras instala el programa en la carpeta CommonApplicationData y luego establecer permisos en esa nueva carpeta para que tenga acceso de escritura de los usuarios grupo.

+0

He usado esto y he almacenado mis archivos en esta carpeta, ¡pero Windows no permite cambios! – Ata

+0

Hmmm, acabo de comprobar mis permisos en C: \ ProgramData y es de solo lectura ... Hmmm –

+0

No, he utilizado CommonApplicationData, donde puedo almacenar mis archivos, por lo que no necesitaré permiso de administrador. – Ata

0

Es una opción de seguridad activada por defecto en Windows 7, es decir, UAC (control de cuentas de usuario). Debe cambiar su diseño (escribir en otro lugar) o desactivar el UAC desde el panel de control \ Cuentas de usuario.

+0

"Deberías cambiar tu diseño (escribir en otro lugar)" ... Pero, ¿dónde? – DefenestrationDay

0

Me he encontrado con el mismo problema, pero con el instalador de instalación de Inno, tengo un parámetro llamado "Permisos" donde establezco el valor "usuarios llenos" para crear un archivo en la carpeta de aplicaciones en los datos comunes de la aplicación con control total para todos los usuarios de ese archivo.

Cuestiones relacionadas