c# - 为什么无法在 Windows 7 64 位中从 mdb 文件检索数据?

标签 c# windows ms-access

我最近购买了一个使用mdb文件进行数据存储的软件。我不太喜欢该软件的报告和语句生成功能,因此我决定使用 VS 2008 的 C# 编写自己的报告程序。

所以我的程序 Access 了我刚买的软件附带的mdb文件。我的开发环境是Windows XP。我的部署环境是Windows 7 64位。在我的开发计算机中,我可以很好地从 mdb 文件中检索记录,但是当我将程序部署到 Windows 7 64 位计算机时,它无法从 mdb 文件中读取记录。不会抛出任何错误,只是无法获取该数据。

我还尝试在部署计算机(Win 7 64 位)上安装 VS 2012 并在那里导入我的 VS2008 项目。同样的问题,无法从该 mdb 文件获取记录(同样,不会引发错误)。

请帮忙?

编辑1:我刚刚尝试使用购买的软件备份实用程序备份mdb。我可以从备份的 mdb 中检索记录。我想知道该软件是否正在尝试修改我对 mdb 文件的 Access 权限。

编辑2:我不认为该软件正在尝试修改我对mdb文件的 Access 权限,因为当部署到我的xp机器上时,我可以很好地 Access mdb文件。

编辑 3:我开始怀疑这是 Windows 7 中的文件安全功能。

编辑 4:如果我复制 mdb 文件并 Access 复制的 mdb 文件,它将返回 0 行。如果我使用软件的备份实用程序对其进行备份,它会返回我期望的确切行。

最佳答案

问题在于您遇到了 Windows 的安全功能。

程序不再允许更改程序文件目录下的文件,除非它们以提升的 Access 权限运行。

发生的情况是一个名为 Virtual Store 的功能启动并在您的用户个人资料下的其他位置创建该文件的私有(private)(为您的用户)副本。

很可能该软件在用户配置文件下创建了一个空数据库文件,并且正在 Access 该文件。

您不能再将可写文件放入程序文件中,该程序需要重新设计或安装在其他位置,例如在具有写入权限的用户配置文件下。

关于c# - 为什么无法在 Windows 7 64 位中从 mdb 文件检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25928375/

相关文章:

c++ - 使用 Visual Studio 在控制台中输出 utf8(宽流)

windows - 如何从 Ubuntu 机器连接到在 Windows 机器上运行的 Neo4j 服务器?

c# - Windows Phone 7 的 Protocol Buffer 网络

c# - ASP.NET Web API - 部署后获取 AspNetInitializationExceptionModule

c# - 如何使用 LINQ 添加两条记录?

c# - 如何防止在 .NET 中弹出 Windows 安装对话框?

ms-access - Access 仅导出查询的第一列

excel - 如何将参数发送到 Microsoft Access 查询,以便我可以将 Access 参数查询导入到 Excel?

javascript - 将硬拷贝表格转换为电子表格或数据库

c# - 在 .Net 4.7.2 中导入 AngleSharp 时绑定(bind)重定向以某种方式尝试将 NetStandard 2 作为 dll 引入