我的Windows移动应用程序有一个本地数据库文件(database.sdf
)。用户在其设备中安装CAB文件时创建的文件。安装工作正常,但当我尝试使用查询分析器打开SDF或当应用程序尝试访问数据库时,我收到一条消息。
“不允许访问数据库文件”(25039)
当我使用Windows资源管理器检查权限(设备已停靠)时,该文件被标记为只读。如果删除Read Only复选框,一切正常,我可以打开,编辑和添加记录到数据库。
默认情况下,如何使文件不是只读?
答案 0 :(得分:2)
您可以在启动应用程序期间以编程方式验证属性。在C#/。netcf中它将是:
if (File.GetAttributes(path) & FileAttributes.ReadOnly == FileAttributes.ReadOnly)
File.SetAttributes(path, File.GetAttributes(path) & ~FileAttributes.ReadOnly);
答案 1 :(得分:2)
除了yms提供的答案之外,我还会尝试弄清楚为什么首先将文件创建为就绪。
是否通过您添加到安装过程中的某个自定义安装程序创建了?或者它是通过cabwiz或VS中的安装程序项目打包到.CAB文件中的?
如果是前者,请检查该安装程序库的源代码。 如果是后者,请检查源文件。如果在Visual Studio项目中包含SDF并将项目检入某种类型的源代码控制,那么当它被检入源存储库时,它可能是在磁盘上被打包到.CAB中时是只读的。
答案 2 :(得分:1)
我知道这是旧的,但如果安德鲁实际上使用.netcf,它就没有File.GetAttributes。相反,他应该使用
FileInfo info = new FileInfo(pathToFile)
if ((info.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
info.Attributes &=~ FileAttributes.ReadOnly;