代码之家  ›  专栏  ›  技术社区  ›  ytoledano

更新到Windows 7后,不会保存对Access数据库的更改。

  •  2
  • ytoledano  · 技术社区  · 16 年前

    我正在使用一个访问MS Access数据库的程序。问题是,如果我用access打开db文件,我看到的值不是我使用程序时看到的值。例如,有一个带有各种程序变量的表参数,其中一个是我上次加载某个文件的日期。在access中,它读2010年4月12日,而在程序中,它读2010年5月7日(这是正确的)。

    4月12日是我把电脑升级到Windows7的时候。另外,mdb文件位于c:\program files(x86)中可执行程序的旁边;我知道win7不允许程序写入program files dir。那么更改保存在哪里?

    我试过的: 我尝试在另一台计算机上打开mdb文件-仍然读取错误的(旧)值 我尝试将整个程序dir复制到另一个文件夹-现在程序和MS Access都读取了错误的值。

    有人能告诉我如何得到一个版本的数据库与所有的值最新的程序?

    谢谢。

    2 回复  |  直到 16 年前
        1
  •  4
  •   Kelly    16 年前

    是否将数据库放在应用程序文件夹中?如果是这样,您可能正在经历UAC虚拟化(又称数据重定向)。

    例如,如果应用程序试图写入C:\Program Files\Contoso\Settings.ini,而用户没有权限写入该目录(程序文件),则写入操作将重定向到C:\Users\Username\AppData\Local\VirtualStore\Program Files\Contoso\Settings.ini。

    数据库应存储在 %AppDATA % 取而代之的是文件夹。

    http://windowsteamblog.com/blogs/developers/archive/2009/08/04/user-account-control-data-redirection.aspx

    http://support.microsoft.com/kb/927387

        2
  •  0
  •   Kate Gregory    16 年前

    当您在Windows资源管理器中查看程序文件时,请在“组织”、“打开”、“打印”、“刻录”等命令中查找一个按钮。 Compatibility Files . 一般来说,这会将您带到一个文件夹的虚拟化位置。

    此外,如果您愿意忍受UAC提示,如果您以管理员身份运行应用程序,它将写入程序文件下的位置。或者,如果您将安装移动到程序文件以外的其他位置,尽管这会导致您失去对更改exe的人的保护,但它也会写入应用程序目录。

    推荐文章