无法更新.mdf数据库,因为该数据库是只读的(Windows应用程序)

|| 我已经在C#中创建了一个数据库Windows应用程序。我的应用程序在Windows XP上成功运行,但是在Vista或Windows 7系统上无法正确执行。我的应用程序显示类似于 无法更新.mdf数据库,因为该数据库是只读的 谁能给我解决方案?
已邀请:
如果MDB文件位于您的应用程序路径中,则默认权限将要求提升权限才能写入文件-我建议将数据移至ApplicationData共享文件夹,最终用户将在该文件夹中拥有写入权限默认
Windows XP和Windows Vista / 7之间最大的变化是引入了UAC,这意味着即使以管理员身份创建的用户也通常无法对“重要”位置(例如“ 0”)进行读/写访问。 (通常是“ 1”或“ 2”)目录。这就是为什么您的应用程序可以在Windows XP而不是Windows Vista上运行的原因。 如果数据在计算机上的用户之间共享,则需要将数据存储在
%programdata%
目录(通常为
C:\\ProgramData
)中,如果数据是特定于给定用户的,则需要将store5 store(通常为
C:\\Users\\USERNAME_GOES_HERE\\AppData\\Roaming
)存储。现在,您将不再遇到无法写入文件的问题。 原因是通过将数据存储在程序安装目录中,您做错了事。 Windows并没有阻止您以前执行此操作,但是有相当多的文献证明,“ 0”不是存储数据的合适位置。
我遇到了与此有关的localdb,文件名为:
myfolder/mysolution/myproject/App_Data/something.mdf
我修复的方法是右键单击顶级文件夹(
myfolder
),然后选择
Properties
,然后选择
Edit
,然后选择
Users
,向用户添加
Modify
权限或同时获得
Modify
和完全控制权(这是一个开发环境),然后单击“应用”。 因此,换句话说,根据我的经验,将localdb放入哪个文件夹都没有关系,您只需要授予Users写入权限即可。
您应该将IIS_IUSRS用户的“修改”权限添加到* .mdf文件。
转到安装程序的文件夹,然后右键单击数据库文件,然后右键单击“属性”->“安全性”->“组或用户名”(一个一个地单击用户,并在下面查看权限) 如果未将用户设置为完全控制,则单击编辑->选择用户并提供完全控制。

要回复问题请先登录注册