Vb6 Vista幻影目录

Vb6 Vista幻影目录,vb6,windows-vista,inno-setup,txf,Vb6,Windows Vista,Inno Setup,Txf,我们有一个程序,安装程序会检查配置文件是否存在,如果存在,它不会复制该文件(它假设用户修改了配置文件并希望保留这些修改)。不幸的是,这是一个Vista之前的应用程序,它将配置文件保存在程序文件中。问题是,如果在重新安装某个API时手动清除该目录,该API仍然认为该目录存在。例如,VB6及其“浏览文件”对话框可以看到该文件夹,而explorer、cmd shell等无法看到该文件夹。在文件上写入时,仍然会保留旧文件(对于某些API,但对于资源管理器),除了“浏览文件”对话框中的表单之外,无法删除旧

我们有一个程序,安装程序会检查配置文件是否存在,如果存在,它不会复制该文件(它假设用户修改了配置文件并希望保留这些修改)。不幸的是,这是一个Vista之前的应用程序,它将配置文件保存在程序文件中。问题是,如果在重新安装某个API时手动清除该目录,该API仍然认为该目录存在。例如,VB6及其“浏览文件”对话框可以看到该文件夹,而explorer、cmd shell等无法看到该文件夹。在文件上写入时,仍然会保留旧文件(对于某些API,但对于资源管理器),除了“浏览文件”对话框中的表单之外,无法删除旧文件


这些幻影文件夹是怎么回事?我们如何删除该文件以便所有API都看到相同的内容?可能与此有关,或者与搜索的索引器有关,但是我们使用的安装程序(InnoSetup)和应用程序的部分(用VB6编写的部分)都会看到文件的旧版本,其他所有内容都会看到当前版本。

您是指AppData文件夹(C:\Documents and Settings\UserName\AppData)?我不在我的vista机器上,但我认为这就是路径,而且在卸载后它不会被删除。

不知道我是否走上了正确的轨道,但是vista是否会为尝试写入它的应用程序虚拟化%programfiles%,或者将其标记为“不正确的方式”?(因此将其移动到文件系统的用户部分的某个位置,而不告诉遗留应用程序有关它的信息-使它有点透明)


虚拟存储重定向的文件存储在%appdata%中的某个位置-当位于别名位置时,您还可以通过在资源管理器中选中“Compability files”选项来查找位置。据我所知,您需要停止写入%programfiles%以消除这种行为。

正如奥斯卡·杜维伯恩所说,您看到的很可能是Vista的虚拟化行为

当计算机启用了用户帐户控制(UAC)时,标准用户和非提升程序不允许写入程序文件夹。Windows会自动将文件重定向到
%AppData%\Local\VirtualStore
的相应子文件夹(例如,
C:\Users\MyUser\AppData\Local\VirtualStore

如果在资源管理器中浏览真实文件夹,您将看到“兼容性文件”工具栏按钮,您可以使用该按钮浏览虚拟存储

请注意,这只是Windows的兼容性行为-您的程序应该写入自己的
%AppData%
子文件夹


有关更多信息,请参阅。

上面Ant提供的TechNet链接(已接受的答案)不再有效。新的链接是:


-Windows Vista中常见的文件和注册表虚拟化问题

与AppData无关,它与%ProgramFiles%(C:\Program Files)以及Vista如何处理有关。由于许多原因,我们无法将配置移动到AppData中它应该在的位置。只是有人认为%AppData%是Vista发明或推动的-事实并非如此。例如,在当前用户配置单元或其%appdata%文件夹中存储内容是非常旧的,也是正确的方法。我从未以本地管理员的身份运行过NT4 damnit^^^是的,我认为你的思路是正确的,但文件系统的用户部分在哪里?