USMT 包括两个迁移设置和数据的工具:ScanState 和 LoadState。ScanState 从源计算机收集信息,而 LoadState 则将该信息应用到目标计算机上。
ScanState 进程
LoadState 进程
备注有关 USMT 如何处理规则和 XML 文件的详细信息,请参阅冲突和优先级。
ScanState 进程
在源计算机上运行 ScanState 时,ScanState 将经过以下过程:
ScanState 将解析和验证命令行参数,创建 ScanState.log 文件,然后开始日志记录。
ScanState 将收集有关需要迁移的所有迁移组件的信息。迁移组件是文件、注册表项和值的逻辑组。例如,用于存储 Adobe Acrobat 设置的一组文件、注册表项和值被分组为单个迁移组件。
存在三种类型的组件:
用于迁移操作系统设置的组件
用于迁移应用程序设置的组件
用于迁移用户文件的组件
ScanState 工具将从命令行指定的 .xml 文件中收集有关应用程序设置和用户数据组件的信息。
在 Windows Vista®、Windows 7 和 Windows 8 中,清单文件将控制操作系统设置的迁移方式。你无法修改这些文件。如果要排除某些操作系统设置,则必须创建并修改 Config.xml 文件。
ScanState 将确定应迁移的用户配置文件。在默认情况下,将迁移源计算机上的所有用户配置文件。但是,你可以使用用户选项来包括和排除用户。始终迁移系统配置文件,即运行 Windows® XP 的源计算机中的“所有用户”配置文件或运行 Windows Vista、Windows 7 和 Windows 8 的源计算机中的“公用”配置文件,你无法从迁移中排除这些配置文件。
在“扫描”阶段,ScanState 将对选择迁移的每个用户配置文件执行以下操作:
对于每个组件,ScanState 将检查组件的类型。如果当前用户配置文件为系统配置文件,且组件类型为“System”或“UserAndSystem”,则将为此用户选择组件。否则,将忽略该组件。此外,如果当前用户配置文件不是系统配置文件,且组件类型为“User”或“UserAndSystem”,则将为此用户选择组件。否则,将忽略该组件。
备注从此时起,ScanState 不会区分用于迁移操作系统设置的组件、用于迁移应用程序设置的组件,以及用于迁移用户文件的组件。ScanState 将以同一种方式处理所有组件。 将进一步处理在上一步中选择的每个组件。所有配置文件特定的变量(如 CSIDL_PERSONAL)都在当前配置文件的上下文中进行评估。例如,如果正在处理的配置文件属于“User1”,则 CSIDL_PERSONAL 将展开到 C:\Users\User1\Documents(假设该用户配置文件存储在 C:\Users 目录中)。
对于每个选定的组件,ScanState 将评估 <detects> 部分。如果 <detects> 部分中的条件的评估结果为假,则不会进一步处理该组件。否则,将继续处理该组件。
对于每个选定的组件,ScanState 将评估 <rules> 部分。对于每个 <rules> 部分,如果当前用户配置文件为系统配置文件,且 <rules> 部分的上下文为“System”或“UserAndSystem”,则将进一步处理该规则。否则,将忽略该规则。此外,如果当前用户配置文件不是系统配置文件,且 <rules> 部分的上下文为“User”或“UserAndSystem”,则将进一步处理该规则。否则,将忽略该规则。
ScanState 将创建一个迁移单元列表,需要通过处理此 <rules> 部分下的各个子部分来迁移这些单元。只要在同一个 <rules> 部分的 <exclude> 子部分中没有针对某个单元的特定规则,即收集在 <include> 子部分中提到的每个单元。有关 .xml 文件中的优先级的详细信息,请参阅冲突和优先级。
此外,将不会迁移 <UnconditionalExclude> 部分中的任何迁移单元(如文件、注册表项或注册表值)。
备注ScanState 将忽略某些子部分,如 <destinationCleanup> 和 <locationModify>。这些部分仅在目标计算机上进行评估。
在“收集”阶段,ScanState 通过组合为每个选定的用户配置文件创建的列表来创建迁移单元的主列表。
在“保存”阶段,ScanState 会将已收集的迁移单元写入存储位置。
备注ScanState 不会以任何方式修改源计算机。
LoadState 进程
LoadState 进程与 ScanState 进程非常相似。ScanState 将从源计算机中收集迁移单元(如文件、注册表项或注册表值)并将它们保存到存储中。同样,LoadState 将从存储中收集迁移单元,并将它们应用于目标计算机。
ScanState 将解析并验证命令行参数,创建 ScanState.log 文件,然后开始日志记录。
LoadState 将收集有关需要迁移的迁移组件的信息。
LoadState 将从 LoadState 命令中指定的 .xml 迁移文件中获得应用程序设置组件和用户数据组件的信息。
在 Windows Vista、Windows 7 和 Windows 8 中,清单文件将控制操作系统设置的迁移方式。你无法修改这些文件。如果要排除某些操作系统设置,则必须创建并修改 Config.xml 文件。
LoadState 将确定应迁移的用户配置文件。在默认情况下,将迁移源计算机中的所有用户配置文件。但是,你可以使用用户选项来包括和排除用户。始终迁移系统配置文件,即运行 Windows XP 的源计算机中的“所有用户”配置文件或运行 Windows Vista、Windows 7 和 Windows 8 的源计算机中的“公用”配置文件,你无法从迁移中排除这些配置文件。
如果你正在迁移本地用户帐户并且这些帐户尚未存在于目标计算机上,则必须使用 /lac 命令行选项。如果未指定 /lac 选项,则不会迁移尚未存在于目标计算机上的所有本地用户帐户。
如果指定了 LoadState 命令时已包括 /md 和 /mu 选项,则会处理这些选项以便对目标计算机上的用户配置文件进行重命名。
对于从存储中选择的每个用户配置文件,LoadState 将在目标计算机上创建对应的用户配置文件。不需要将目标计算机连接至与要创建的域用户配置文件对应的域。如果 USMT 无法确定域,它将尝试将这些设置应用到本地帐户。有关详细信息,请参阅标识用户。
在“扫描”阶段,LoadState 将对每个用户配置文件执行以下操作:
对于每个组件,LoadState 将检查组件的类型。如果当前用户配置文件为系统配置文件,且组件类型为“System”或“UserAndSystem”,则将为此用户选择组件。否则,将忽略该组件。此外,如果当前用户配置文件不是系统配置文件,且组件类型为“User”或“UserAndSystem”,则将为此用户选择组件。否则,将忽略该组件。
备注从此时起,LoadState 不会区分用于迁移操作系统设置的组件、用于迁移应用程序设置的组件,以及用于迁移用户文件的组件。LoadState 将以同一种方式评估所有组件。 选定的每个组件都会被进一步处理。所有配置文件特定的变量(如 CSIDL_PERSONAL)都在当前配置文件的上下文中进行评估。例如,如果正在处理的配置文件属于“User1”,则 CSIDL_PERSONAL 将展开到 C:\Users\User1\Documents(假设该用户配置文件存储在 C:\Users 目录中)。
备注LoadState 将忽略在组件中指定的 <detects> 部分。此时,将考虑检测所有指定的组件,并选择这些组件进行迁移。 对于每个选定的组件,LoadState 将评估 <rules> 部分。对于每个 <rules> 部分,如果当前用户配置文件为系统配置文件,且 <rules> 部分的上下文为“System”或“UserAndSystem”,则将进一步处理该规则。否则,将忽略该规则。此外,如果当前用户配置文件不是系统配置文件,且 <rules> 部分的上下文为“User”或“UserAndSystem”,则将进一步处理该规则。否则,将忽略该规则。
LoadState 通过处理 <rules> 部分下的各个子部分来创建迁移单元的主列表。只要在同一个 <rules> 部分的 <exclude> 子部分中没有针对迁移单元的特定规则,即迁移 <include> 子部分中的每个迁移单元。有关优先级的详细信息,请参阅冲突和优先级。
LoadState 将评估目标计算机的特定子部分(例如 <destinationCleanup> 和 <locationModify> 子部分)。
如果目标计算机运行 Windows Vista 或 Windows 7,则 ScanState 使用下层清单文件收集的迁移单元将由 LoadState 使用对应的 Windows 7 组件清单进行处理。运行 LoadState 期间不使用下层清单文件。
重要
重要的是使用 LoadState 命令指定 .xml 文件(如果你考虑让 LoadState 使用它们)。否则,将忽略这些 .xml 文件中的所有目标特定规则(如 <locationModify>),即使在运行 ScanState 命令期间提供了相同的 .xml 文件也是如此。
在“应用”阶段,LoadState 会将已收集的迁移单元写入目标计算机中的不同位置。如果发生冲突且不存在针对该对象的 <merge> 规则,则注册表的默认行为是源覆盖目标。文件的默认行为是逐步重命名源,例如,OriginalFileName(1).OriginalExtension。用户下次登录后,某些设置(例如,字体、墙纸和屏幕保护程序设置)才会生效。出于此原因,完成 LoadState 命令操作后你应该注销。