我正在使用访问MS-Access数据库的程序。问题是如果我用Access打开db文件,我看到的值不是我在使用程序时看到的值。例如,有一个包含各种程序变量的表PARAMS,其中一个是我上次加载某个文件的日期。访问时间为2010年4月12日,而在2010年5月7日的程序中(这是正确的)。
4月12日是关于我将计算机升级到Windows 7的时间。此外,mdb文件位于C:\ Program Files(x86)中程序可执行文件的旁边;我知道Win7不允许程序写入程序文件目录。那么变化保存在哪里?
我尝试过的: 我试过在另一台计算机上打开mdb文件 - 仍然读取错误的(旧)值 我已经尝试将整个程序目录复制到另一个文件夹 - 现在程序和ms-access都读取了错误的值。
有人可以告诉我如何使用该程序获取所有最新值的数据库版本吗?
感谢。
答案 0 :(得分:4)
您是否将数据库放在应用程序文件夹中?如果是这样,您可能正在经历UAC虚拟化(AKA数据重定向)。
“例如,如果应用程序尝试写入C:\ Program Files \ Contoso \ Settings.ini,并且用户没有权限写入该目录(Program Files),则将重定向写入操作到C:\ Users \ Username \ AppData \ Local \ VirtualStore \ Program Files \ Contoso \ settings.ini“
数据库应存储在%APPDATA%文件夹中。
答案 1 :(得分:0)
当您在Windows资源管理器中查看程序文件时,请查找一个按钮,其中包含组织,打开,打印,刻录等Compatibility Files
。这通常会将您带到文件夹的虚拟化位置。
此外,如果您愿意忍受UAC提示,如果您以管理员身份运行该应用程序,它将写入程序文件下的位置。或者,如果将安装移动到程序文件以外的其他位置,虽然这会导致您失去对更改exe的人的保护,但它也会写入应用程序目录。