1

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

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

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

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

4

3 回答 3

2

除了 yms 提供的答案之外,我还会尝试弄清楚为什么首先将文件创建为仅就绪文件。

它是通过您添加到安装过程中的一些自定义安装程序 dll 创建的吗?还是通过 cabwiz 或 VS 中的安装程序项目将其打包到 .CAB 文件中?

如果是前者,请检查该安装程序库的源代码。如果是后者,请检查源文件。如果您在 Visual Studio 项目中包含 SDF 并将该项目签入某种类型的源代码管理,那么当它被签入源存储库时,它很可能在打包到 .CAB 时在磁盘上是只读的。

于 2012-06-21T12:47:55.300 回答
2

您可以在应用程序启动期间以编程方式验证该属性。在 C#/.netcf 中它将是:

if (File.GetAttributes(path) & FileAttributes.ReadOnly == FileAttributes.ReadOnly)
    File.SetAttributes(path, File.GetAttributes(path) & ~FileAttributes.ReadOnly);
于 2012-06-19T19:34:19.643 回答
1

我知道这是旧的,但如果 Andrew 实际上使用的是 .netcf,它没有 File.GetAttributes。相反,他应该使用

        FileInfo info = new FileInfo(pathToFile)
        if ((info.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
            info.Attributes &=~ FileAttributes.ReadOnly;
于 2013-05-06T12:19:10.953 回答