用Windows Vista操作系统的虚拟化功能,你可能会遇到下面所描述的文件和注册表虚拟化问题。

  情形1:安装、升级或使用应用程序时收到错误消息

  在安装、升级或使用应用程序时,可能会收到各种表明拒绝访问的错误消息。例如,您可能会遇到下列症状之一: ? 在文件夹 %programfiles% 之外的其他文件夹中安装了应用程序后,会收到“拒绝访问”的错误消息。此外,该应用程序无法正常工作。

  ? 您收到类似于以下内容的应用程序错误消息:

  Cannot create folder under C:\MyApp\Temp

  Cannot create folder under C:\MyApp\Temp\output.dat

  ? 您收到类似于以下内容的错误消息:

  写入MyFile.exe 时出错

  当您执行下列任一操作时,可能会出现此问题: ? 在虚拟位置创建链接。

  ? 使用加密文件系统 (EFS) 加密文件。

  ? 试图查看压缩文件

  ? 使用命令提示符向一个虚拟位置复制 .exe、.sys 或 .dll 文件。

  ? 应用程序中需要文件输入或输出的部分不再正常工作。

  情形2:找不到刚创建的文件或文件夹

  在使用已启用虚拟化的应用程序时,您在文件系统的虚拟位置创建了数据文件。当使用其他应用程序或 Windows 资源管理器访问这些新创建的文件时,却找不到这些文件。例如,如果在照片编辑应用程序中将某文件保存到 %programfiles%、%systemroot% 或 %programdata% 文件夹中,则找不到此文件。

  情形3:升级某个应用程序后遇到意外程序行为

  在升级某个应用程序后,收到类似于以下内容的错误消息:

  Error. Please upgrade your application

  此外,该应用程序无法正常工作。应用程序似乎正在使用错误的或升级前的数据。

  情形4:在卸载应用程序之后,该应用程序的文件仍在计算机上

  在这种情况下,您会遇到下列症状之一: ? 在其他应用程序中,您注意到已卸载应用程序的文件和文件夹信息仍存在于 %programfiles%、%programdata% 或 %systemroot% 文件夹中。

  ? %userprofile%\AppData\Local\VirtualStore 文件夹比预期的大。在卸载应用程序时,未删除在该应用程序运行时创建的虚拟化文件。

  原因

  以下一种或多种情况可能会引起这些问题: ? 应用程序试图在某些指定的虚拟化文件夹之外创建文件或文件夹。

  ? 应用程序在 %programfiles% 文件夹中保存的文件可能指向用户虚拟存储文件夹以外的文件夹。

  ? 应用程序使用了一个虚拟化不支持的文件。解决方案

  情形1

  要确定是否存在情形 1 中描述的问题,请在事件查看器中查找 FileCreateVirtualExclude 事件。为此,请按照下列步骤操作: 1. 单击“开始”,在“开始搜索”框中键入 eventvwr,然后单击“程序”列表中的“eventvwr.exe”。

  如果系统提示您输入管理员密码或进行确认,请键入密码或单击“继续”。

服务日志”、“Microsoft”、“Windows”和“UacFileVirtualization”,然后选择“Operational”。如果事件 ID 为 5000,则说明已发生 FileCreateVirtualExclude 事件。

  要解决此问题,请使用下列方法之一: ? 如果该程序尚未安装在 %programfiles% 文件夹中,请将其重新安装在 %programfiles% 文件夹中。

  ? 使用具有管理凭据的帐户运行此应用程序。为此,请找到并右键单击该应用程序的快捷方式,然后单击“以管理员身份运行”。

  如果系统提示您输入管理员密码或进行确认,请键入密码或单击“继续”。

  ? 在提升的命令提示符处运行该应用程序。为此,请按照下列步骤操作: 1. 单击“开始”,然后在“开始搜索”框中键入 cmd。

  2. 在“程序”列表中,右键单击“cmd”,然后单击“以管理员身份运行”。

  如果系统提示您输入管理员密码或进行确认,请键入密码或单击“继续”。

  3. 键入 MyAppsPath/MyApp,然后按 Enter。MyAppsPath/MyApp 代表应用程序的路径和名称。

  ? 更改应用程序文件夹的安全设置。为此,请按照下列步骤操作: 1. 以具有管理凭据的用户身份登录,然后使用 Windows 资源管理器打开该应用程序的文件夹。

  2. 右键单击该应用程序的文件夹,然后单击“属性”。

  3. 在“安全”选项卡上,单击“编辑”。

  如果系统提示您输入管理员密码或进行确认,请键入密码或单击“继续”。

  4. 在“组或用户名”下,单击您的用户帐户。

  5. 在“Users 的权限”下,对以下权限单击“允许”: ? 修改

  ? 读取和执行

  ? 列出文件夹目录

  ? 读取

  ? 写入

  6. 单击“确定”。

情形2

  要解决此问题,请使用下列方法之一: ? 单击浏览器栏上显示的“兼容性文件”按钮,以查看该文件夹中的虚拟化文件。仅当该文件夹中存在虚拟化文件时,才显示“兼容性文件”按钮。

  ? 在 C:\Users\User_name\AppData\Local\VirtualStore 文件夹中查找文件和文件夹。

  ? 将应用程序的数据保存在用户配置文件下的文件夹中。

  情形3

  警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能会出现严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证可以解决这些问题。修改注册表需要您自担风险。

  要解决此问题,请使用下列方法之一: ? 在提升的命令提示符处运行该应用程序。为此,请按照下列步骤操作: 1. 单击“开始”,在“开始搜索”框中键入 cmd,然后在“程序”列表中单击“cmd.exe”。

  如果系统提示您输入管理员密码或进行确认,请键入密码或单击“继续”。

  2. 键入 MyAppsPath/MyApp。MyAppsPath/MyApp 代表该应用程序的路径和名称,然后按 Enter。

  ? 打开虚拟存储,然后删除原来的应用程序数据文件。为此,请使用 Windows 资源管理器打开 C:\Users\User_name\AppData\Local\VirtualStore\Program Files\MyApp 文件夹,然后删除您的文档或数据文件之外的所有文件。

  ? 从注册表中删除虚拟存储。

  要在注册表中查找虚拟存储并删除所有不需要的注册表项,请按照下列步骤操作: 1. 单击“开始”,在“开始搜索”框中键入 regedit,然后在“程序”列表中单击“regedit.exe”。

  如果系统提示您输入管理员密码或进行确认,请键入密码或单击“继续”。

  2. 找到并单击下面的注册表子项:

  HKEY_CURRENT_USER\Software\Classes\VirtualStore

  3. 对于不再需要的任何应用程序注册表项,请右键单击该项,单击“删除”,然后单击“是”。

  情形4

  要解决此问题,请使用 Windows 资源管理器打开 C:\Users\User_name\AppData\Local\VirtualStore\MyApp 文件夹,然后删除所有过时的应用程序数据。

  更多信息

  文件和注册表虚拟化可以帮助对注册表和文件系统只有受限访问权限的用户向这些受保护的区域写入内容。虚拟化会创建一个“每个用户”副本,然后重定向连续的数据操作。 例如,在受限用户帐户下或者在需要“用户访问控制”权限的帐户下运行应用程序。当此应用程序向系统位置(如 %programfiles% 文件夹)写入内容时,Windows Vista 会将写入操作和读取操作重定向到用户配置文件文件夹 (%localappdata%\VirtualStore) 中的用户特定位置。默认情况下,此位置为 C:\Users\User_name\AppData\Local\VirtualStore\Program Files\Application_name。注册表虚拟化的工作原理与之类似,但应用于 HKEY_LOCAL_MACHINE\SOFTWARE 子树下的注册表项。此子树下的注册表项和数据重定向到 HKEY_CURRENT_USER\Software\Classes\VirtualStore 子项。