卸载后 Ms Access 数据仍在数据库中

Ms Access data still in database after Uninstall

我有一个应用程序是用 Vb.Net 2010 设计的,它的数据库使用 Ms Access 2007

程序运行正常,但我卸载程序并重新安装时发现了一些有趣的事情,卸载前输入的数据仍在新数据库中,即使重新安装操作将新数据库复制到那个地点。我检查了卸载操作是否在卸载时删除了数据库,我发现它删除了所有内容,包括所有文件夹。我不知道它是否以某种方式缓存在某处或某处。

我正在为我的安装脚本使用 Inno Setup Compiler,除了默认位置之外,没有关于将数据库复制到其他任何地方的说明。

应用中我的connectionString指向数据库所在的App Folder

我上网查了一下,得到了不相关的结果(也许我不知道要搜索的正确关键字)。

请问有人可以帮忙解释一下发生了什么以及可能的解决方案吗?

我需要帮助,谢谢。

看来你被User Account Control (UAC) virtualization骗了。您显然已将数据库文件存储在 %ProgramFiles% 下,并且用户没有 read/write 访问这些文件夹的权限,因此 Windows 在

的子文件夹中复制了该文件

%USERPROFILE%\AppData\Local\VirtualStore\Program 个文件

并将 read/write 操作重定向到该副本。

当您卸载应用程序时,安装程​​序可能会在提升的权限下运行(通过 UAC 提示)并删除数据库文件的原始副本(在 %ProgramFiles% 中),但虚拟化副本仍然存在。然后,当您重新安装(再次以提升的权限)时,原始文件将被复制回 %ProgramFiles%,但(修改后的)虚拟化副本已经存在,因此您可以看到之前的旧数据。

道德:如果您的应用程序需要对数据库文件进行修改,请不要将其与您的应用程序文件一起存储。让您的安装程序将它放在用户通常具有 read/write 访问权限的位置,例如,对于个人用户,在 %USERPROFILE% 下,对于同一台机器上的多个用户,在 %PUBLIC% 下。