我有一个安装在 C:/Program Files/IronDuke 中的旧版 VB6 系统
过去它已将一些文件写入此目录。我知道如果应用程序安装在 Vista 或更高版本的操作系统下,这些文件会被隐藏,但如果它们是在 XP 或更早的操作系统下编写的,则不会。
在 Vista 或 Windows 7 或 8 下编写时,如何检索这些“隐藏”文件的副本?
我有一个安装在 C:/Program Files/IronDuke 中的旧版 VB6 系统
过去它已将一些文件写入此目录。我知道如果应用程序安装在 Vista 或更高版本的操作系统下,这些文件会被隐藏,但如果它们是在 XP 或更早的操作系统下编写的,则不会。
在 Vista 或 Windows 7 或 8 下编写时,如何检索这些“隐藏”文件的副本?
您正在查看一个名为 的功能UAC Virtualization
,这篇博客文章对正在发生的事情以及文件所在的位置进行了很好的概述。
从上面的文章:
例如,如果应用程序尝试写入 C:\Program Files\Contoso\Settings.ini,而用户没有写入该目录(Program Files)的权限,则写入操作将重定向到 C:\用户\用户名\AppData\Local\VirtualStore\Program Files\Contoso\settings.ini。如果应用程序尝试写入注册表中的 HKEY_LOCAL_MACHINE\Software\Contoso\,它将自动重定向到 HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\Software\Contoso 或 HKEY_USERS\UserSID_Classes\VirtualStore\Machine\Software\Contoso。
所以在你的情况下,如果你试图找到你需要查看的文件:
C:\Users\用户名\AppData\Local\VirtualStore\Program Files\IronDuke\
您不能在 Windows 7 / 8 下写入 Program Files - 系统安全性会阻止以普通用户身份运行的程序这样做。您的一种选择是将这些文件写入用户的配置文件文件夹(您必须为此更新 VB6 程序,尽管如果程序编写得很好,更改应该很小)。这将是您的最佳选择,因为更新后的代码将来会很好地工作而无需进行更多更改。
您可以使用兼容模式运行程序,但我对此表示怀疑——在我的 Windows 8 系统上,我什至不再将“Windows XP”作为兼容性选项。所有其他选项可能会强制执行安全性。
您可以尝试以管理员身份运行您的程序,但如果您没有进行更改的源,我只会这样做 - 以所有权限运行程序是不好的做法,因为它会打开系统进行攻击。