Error al actualizar la base de datos .mdf porque la base de datos es de solo lectura (aplicación de Windows)

Creé una aplicación de Windows de base de datos usando C #. Mi aplicación se ejecuta con éxito en Windows XP, pero no se ejecuta correctamente en los sistemas Vista o Windows 7. Mi aplicación muestra un mensaje similar a

Error al actualizar la base de datos .mdf porque la base de datos es de solo lectura

¿Alguien puede darme una solución a esto?

Si el archivo MDB está en la ruta de la aplicación, entonces los permisos predeterminados requerirían la elevación de derechos para poder escribir en los archivos. Recomiendo mover los datos a la carpeta compartida ApplicationData, donde los usuarios finales tendrán permisos de escritura. defecto

Lo más importante que cambió entre Windows XP y Windows Vista / 7 es la introducción de UAC, lo que significa que los usuarios, incluso si se crean como administradores, no tienen rutinariamente acceso de lectura / escritura a ubicaciones “importantes” como %programfiles% ( Por lo general, el directorio C:\Program Files o C:\Program Files (x86) ). Esta es la razón por la cual su aplicación funciona en Windows XP y no en Windows Vista.

Necesita almacenar sus datos en el directorio %programdata% (que generalmente es C:\ProgramData ) si los datos se comparten entre usuarios en la máquina o %appdata% (que generalmente es C:\Users\USERNAME_GOES_HERE\AppData\Roaming ) si es específico para un usuario dado. Ya no encontrará el problema de no poder escribir en el archivo.

La razón de esto es que al almacenar datos en el directorio de instalación de sus progtwigs, estaba haciendo lo incorrecto . Windows no impidió que hiciera esto anteriormente, pero estaba bastante documentado que %programfiles% no era el lugar apropiado para almacenar datos.

Me encontré con esto relacionado con localdb, el archivo se llama así:

 myfolder/mysolution/myproject/App_Data/something.mdf 

La forma en que lo solucioné es hacer clic derecho en la carpeta de nivel superior ( myfolder ) y luego elegir Properties , luego elegir Edit , luego seleccionar Users , agregar a los usuarios el permiso Modify o ambos Modify y controlar por completo (este es un entorno de desarrollo ) y luego haz clic en aplicar.

En otras palabras, en mi experiencia, no importa en qué carpeta coloque el localdb, solo necesita dar permiso a los usuarios para escribir.

vaya a la carpeta donde está instalado el progtwig y haga clic con el botón secundario en el archivo de la base de datos y en Propiedades -> Seguridad -> Grupo o Nombre de usuario (haga clic en los usuarios uno por uno y vea a continuación los permisos)

Si el usuario no tiene control total, haga clic en EDITAR -> Seleccione el usuario y otorgue control total.