我最近购买了一个使用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/