2009-05-03 66 views
7

我有一个应用程序修改,以考虑VISTA中的UAC。 所以,现在的的.mdb(JET或访问文件)位于ProgramData\MyApp\为什么虚拟化在MS Vista中的ProgramData文件夹?

我意识到,当我的应用程序读取,第一次是从该位置做数据库...但是,当我的应用程序是写入数据库...文件被虚拟化并进入Users\MyUser\AppData\Local\VirtualStore\ProgramData\MyApp。从现在开始,我的应用程序始终转到磁盘中的虚拟化位置。

我的应用程序正在运行,但是如果我继续这种方式,数据库将以每个用户为基础,并且我们确实需要与PC中的所有用户共享数据库。

我认为在ProgramData文件夹下写入文件不会触发虚拟机制。

我错过了什么?

我需要在ProgramData下设置MyApp文件夹的权限??

如何在安装时间上做到这一点?

感谢的人...

更多信息: 使用VS2003 VB.NET的VS安装项目开发。

+1

“Vista”不是首字母缩写,所以只有第一个字母应该大写。 – 2009-05-03 21:45:58

回答

2

您很可能需要在安装期间为所有用户设置写入权限。

要测试,请删除虚拟化文件夹,手动设置ProgramData \ MyApp文件夹和文件的权限并查看是否有效。

至于如何在安装过程中务实地做到这一点,这取决于您使用的是什么技术。

+0

Yeap,它只是写权限。另一个棘手的事情是,从VS 2003安装项目中执行MSI,并使用自定义操作(设置文件夹权限)在Vista中导致错误,因为CustomActions作为运行安装程序的高架用户登录的普通用户运行。您必须使用ORCA编辑MSI文件以将“No Impersonate”的标志设置为true。为此,请在“自定义操作”表的“安装”行的“类型”列中设置3073作为值。 – Romias 2009-05-05 13:50:18

1

我在这里也遇到了麻烦,看来vista一旦决定虚拟化文件,停止它的唯一方法就是删除虚拟文件。 下次您使用它时,它将使用ProgramData文件夹。