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

文章翻译 文章翻译
文章编号: 927387 - 查看本文应用于的产品
重要说明:本文包含有关如何修改注册表的信息。修改注册表前一定要先对其进行备份。并且一定要知道在出现问题时如何还原注册表。有关如何备份、还原和修改注册表的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 Microsoft Windows 注册表说明
展开全部 | 关闭全部

本文内容

症状

在使用 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”。

    收起这个图片展开这个图片
    “用户访问控制”权限
    如果系统提示您输入管理员密码或进行确认,请键入密码或单击“继续”。
  2. 依次展开“应用程序和服务日志”、“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/MyAppMyAppsPath/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
子项。

有关更多信息,请访问下面的 Microsoft 网站:
http://msdn2.microsoft.com/en-us/library/aa480150.aspx

属性

文章编号: 927387 - 最后修改: 2007年3月20日 - 修订: 1.4
这篇文章中的信息适用于:
  • Windows Vista Business
  • Windows Vista Enterprise
  • Windows Vista Home Premium
  • Windows Vista Home Basic
  • Windows Vista Ultimate
  • Windows Vista Business 64-bit edition
  • Windows Vista Enterprise 64-bit edition
  • Windows Vista Home Premium 64-bit edition
  • Windows Vista Home Basic 64-bit edition
  • Windows Vista Ultimate 64-bit edition
关键字:?
kbtshoot kbregistry kbfilesystems kbprb kbexpertiseinter KB927387
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com