更新.mdf数据库失败,因为数据库是只读的(Windows应用程序)
本文关键字:数据库 Windows 应用程序 只读 mdf 失败 因为 更新 | 更新日期: 2023-09-27 17:50:27
我创建了一个使用c#的数据库windows应用程序。我的应用程序在Windows XP系统上运行正常,但在Vista或Windows 7系统上无法正常运行。我的应用程序显示了类似于
的消息谁能给我一个解决这个问题的方法?更新.mdf数据库失败,因为数据库是只读的
Windows XP和Windows Vista/7之间最大的变化是引入了UAC,这意味着用户即使被创建为管理员,也不能常规地对"重要"位置(如%programfiles%
(通常是C:'Program Files
或C:'Program Files (x86)
)目录)具有读/写访问权限。这就是为什么你的应用程序可以在Windows XP上运行而不能在Windows Vista上运行。
如果数据在机器上的用户之间共享,则需要将DATA存储在%programdata%
目录(通常是C:'ProgramData
)中,如果数据特定于给定用户,则需要将其存储在%appdata%
目录(通常是C:'Users'USERNAME_GOES_HERE'AppData'Roaming
)中。现在,您将不再遇到无法写入文件的问题。
这样做的原因是通过将数据存储在程序安装目录中,做了错误的事情。Windows以前并没有阻止您这样做,但是有相当多的文档证明%programfiles%
不是存储数据的合适位置。
如果MDB文件在您的应用程序路径中,那么默认权限将需要提升权限才能写入文件—我建议将数据移动到ApplicationData共享文件夹,最终用户将默认拥有写入权限
我遇到了这个与localdb相关的文件,文件名为:
myfolder/mysolution/myproject/App_Data/something.mdf
我固定它的方式是右键单击顶层文件夹(myfolder
),然后选择Properties
,然后选择Edit
,然后选择Users
,向用户添加Modify
权限或Modify
和完全控制(这是一个开发环境),然后单击应用。
换句话说,根据我的经验,你把localdb放在哪个文件夹并不重要,你只需要给Users写的权限。
您应该将IIS_IUSRS用户的Modify权限添加到*。mdf 文件。
进入安装程序的文件夹,右键单击数据库文件和属性->安全->组或用户名(依次单击用户,查看下面的权限)
如果用户未设置为完全控制,则单击EDIT ->选择用户并给予完全控制