禁用UAC虚拟化后恢复文件

时间:2011-03-15 15:42:15

标签: windows installer uac virtualstore

我们终于开始将我们软件的文档移出程序自己的目录并进入“我的文档”。我们还在清单中添加了“requestedPrivileges”行,以防止虚拟化的进一步麻烦。

但是,如果我们只这样做,那么在Vista / 7中运行旧版本的任何人在更新后可能会在隐藏的VirtualStore目录中的某处丢失工作。那么迁移到21世纪的首选方式是什么?

坦率地说,我有点担心复制文件,特别是因为我似乎无法找到以编程方式进入影子目录,但可能很多其他人在我们面前遇到了同样的问题。 / p>

1 个答案:

答案 0 :(得分:2)

除非您合法地需要管理权限才能使您的程序正常工作,否则不要添加requestedPrivileges - 您的描述中没有任何内容表明您这样做。那个应该也让你只是简单地复制第一次启动时的文件,好像它们仍然在程序目录中一样,因为任何虚拟化仍然有效。

但是,如果您绝对必须在未启用UAC的情况下进行迁移,则可以在%LOCALAPPDATA%\VirtualStore\path\to\file中找到您的文件。例如,如果您的文件 已存储在C:\ Program Files \ OurApp \中,您将在%LOCALAPPDATA%\VirtualStore\Program Files\OurApp\中找到它。

要获取%LOCALAPPDATA%的路径,您可以将SHGetSpecialFolderPathCSIDL_LOCAL_APPDATA一起用作CSIDL参数。