【问题标题】:Why Virtualization on ProgramData folder in MS Vista?为什么要在 MS Vista 中的 ProgramData 文件夹上进行虚拟化?
【发布时间】:2010-10-23 11:03:52
【问题描述】:

我修改了一个应用以考虑 VISTA 中的 UAC。 所以,现在,.mdb(JET 或 Access 文件)位于 ProgramData\MyApp\

我意识到,当我的应用程序第一次读取数据库时,它是从那个位置读取的……但是当我的应用程序写入数据库时​​……文件被虚拟化并转到 Users\MyUser\AppData\Local\VirtualStore\ProgramData\MyApp。从这一刻起,我的应用程序始终会转到磁盘中的虚拟化位置。

我的应用程序正在运行,但如果我继续这样,数据库将基于每个用户,我们确实需要与 PC 中的所有用户共享数据库。

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

我错过了什么?

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

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

谢谢大家...

更多信息: 使用 VS Setup Project 使用 VS2003 VB.NET 开发。

【问题讨论】:

  • “Vista”不是首字母缩写词,所以只有第一个字母应该大写。

标签: windows-vista virtualization uac


【解决方案1】:

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

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

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

【讨论】:

  • 是的,这只是写权限。另一个棘手的事情是,从 VS 2003 安装项目执行 MSI,并使用自定义操作(设置文件夹权限)会导致 Vista 中的错误,因为 CustomActions 以普通用户身份运行,该普通用户安装为运行安装程序的提升用户。您必须使用 ORCA 编辑 MSI 文件才能将“No Impersonate”标志设置为 true。为此,在自定义操作表中,在“安装”行的类型列中,您应该将 3073 设置为值。
  • 啊,从 VS 的 pre-vista 版本设置项目。啊。如果您足够精明地使用 Orca,那么您可能已经准备好使用 WiX,这将使您的生活变得更轻松 :)
【解决方案2】:

我在这里也遇到了麻烦,似乎vista曾经决定虚拟化文件,唯一阻止它的方法就是删除虚拟文件。 下次使用时,会使用 ProgramData 文件夹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 2012-08-18
    • 2015-09-29
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    相关资源
    最近更新 更多