在Windows Mobile上安装后,始终将SDF文件创建为只读

时间:2012-06-19 18:31:45

标签: installer windows-mobile sql-server-ce windows-ce

我的Windows移动应用程序有一个本地数据库文件(database.sdf)。用户在其设备中安装CAB文件时创建的文件。安装工作正常,但当我尝试使用查询分析器打开SDF或当应用程序尝试访问数据库时,我收到一条消息。

  

“不允许访问数据库文件”(25039)

当我使用Windows资源管理器检查权限(设备已停靠)时,该文件被标记为只读。如果删除Read Only复选框,一切正常,我可以打开,编辑和添加记录到数据库。

默认情况下,如何使文件不是只读?

3 个答案:

答案 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;