C# 为什么可以';我在Windows7 64位中从mdb文件检索数据吗?

C# 为什么可以';我在Windows7 64位中从mdb文件检索数据吗?,c#,windows,ms-access,C#,Windows,Ms Access,我最近买了一个使用mdb文件存储数据的软件。我不太喜欢这个软件的报告和语句生成,所以我决定用VS2008的C#编写自己的报告程序 所以我的程序访问我刚买的软件附带的mdb文件。我的开发环境是Windows XP。我的部署环境是Windows 7 64位。在我的开发机器中,我可以从mdb文件中检索记录,但是当我将程序部署到Windows7 64位机器上时,它无法从mdb文件中读取记录。没有抛出错误,只是无法获取数据 我还尝试在部署计算机上安装VS 2012(Win 7 64位),并在那里导入了我的

我最近买了一个使用mdb文件存储数据的软件。我不太喜欢这个软件的报告和语句生成,所以我决定用VS2008的C#编写自己的报告程序

所以我的程序访问我刚买的软件附带的mdb文件。我的开发环境是Windows XP。我的部署环境是Windows 7 64位。在我的开发机器中,我可以从mdb文件中检索记录,但是当我将程序部署到Windows7 64位机器上时,它无法从mdb文件中读取记录。没有抛出错误,只是无法获取数据

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

请帮忙

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

编辑2:我不认为软件试图修改我对mdb文件的访问权限,因为当部署到我的xp机器上时,我可以很好地访问mdb文件

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


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

将目标平台设置为“x86”而不是“任何cpu”,以确保您运行的是32位。

问题是您正在运行Windows的安全功能

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

发生的情况是,一个名为kickin的功能将在您的用户配置文件下的其他地方创建文件的私有(为您的用户)副本

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


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

请向我们展示一段代码(),并准确描述发生的情况。(例如,在这一行中,Console.WriteLine(myDataTable.Rows.Count)打印0,尽管它应该是15。)您确定“没有抛出错误”,还是您捕获了异常但没有正确处理它们(例如,只是抑制它们)?@GordThompson,是的,我确定。我不抑制捕捉。请检查我的编辑上面。我发现了一些新问题。@Heinzi:对不起,粘贴代码没用。正如我所说,没有抛出错误。还有,我也试过那个控制台,Writeline之类的。是的,它打印0,尽管它应该大于0:)请检查我上面的编辑。我发现了一些新的问题。您说“不抛出错误”,是指查询返回0行,还是说您的try/catch中散布了空的catch块,使您相信没有错误?我已经这样做了。同样的问题。请检查我的编辑上面。谢谢。我怎样才能为我自己的程序分配提升访问权限?你不应该。移动数据库或程序。在任何情况下,我都不知道,我假设你需要修改你的程序的清单文件,但我不写通常需要这个的软件。是的,微软安全-pfat!作为开发人员机器上的管理员,我不允许对在某些位置创建的某些文件进行更改。荒唐的有一些变通的办法,但真的很烦人。