USMT 的工作原理

USMT 包括两个用于迁移设置和数据的工具: ScanStateLoadStateScanState 从源计算机收集信息, 而 LoadState 会将该信息应用于目标计算机。

注意

有关 USMT 如何处理规则和 XML 文件的详细信息,请参阅 冲突和优先级

ScanState 进程

当 ScanState 工具在源计算机上运行时,它会经历以下过程:

  1. 它会分析和验证命令行参数,创建 ScanState.log 文件,然后开始日志记录。

  2. 它收集有关需要迁移的所有迁移组件的信息。 迁移组件是文件、注册表项和值的逻辑组。 例如,存储 Adobe Acrobat 设置的文件、注册表项和值集被分组到单个迁移组件中。

    有三种类型的组件:

    • 迁移操作系统设置的组件。

    • 用于迁移应用程序设置的组件。

    • 用于迁移用户文件的组件。

    ScanState 工具从命令行中指定的 .xml 文件中收集有关应用程序设置和用户数据组件的信息。

    在当前支持的 Windows 版本中,清单文件控制操作系统设置的迁移方式。 无法修改这些文件。 若要排除某些操作系统设置, Config.xml 必须创建并修改文件。

  3. ScanState 确定应迁移哪些用户配置文件。 默认情况下,将迁移源计算机上的所有用户配置文件。 但是,可以使用“用户 ”选项包含和排除用户。 始终迁移运行当前受支持的 Windows 版本的源计算机中的系统配置文件和公共配置文件,并且无法从迁移中排除这些配置文件。

  4. 扫描 阶段, ScanState 为迁移选择的每个用户配置文件执行以下操作:

    1. 对于每个组件, ScanState 会检查组件的类型。 如果当前用户配置文件是系统配置文件,并且组件类型为 SystemUserAndSystem,则会为此用户选择该组件。 否则,将忽略组件。 或者,如果当前用户配置文件不是系统配置文件,并且组件类型为 UserUserAndSystem,则会为此用户选择组件。 否则,将忽略此组件。

      注意

      从此, ScanState 不会区分迁移操作系统设置的组件、迁移应用程序设置的组件和迁移用户文件的组件。 ScanState 以相同的方式处理所有组件。

    2. 在上一步中选择的每个组件将进一步处理。 任何特定于配置文件的变量 ((例如 CSIDL_PERSONAL) )都在当前配置文件的上下文中进行评估。 例如,如果正在处理的配置文件属于 User1,则 CSIDL_PERSONAL 将扩展为 C:\Users\User1\Documents,假定用户配置文件存储在 C:\Users 目录中。

    3. 对于每个选定的组件, ScanState<评估 detects> 节。 如果检测>节中的<条件的计算结果为 false,则不会进一步处理该组件。 否则,将继续处理此组件。

    4. 对于每个选定的组件, ScanState<评估规则> 部分。 对于每个<规则>部分,如果当前用户配置文件是系统配置文件,而规则>部分的<上下文是 SystemUserAndSystem,则会进一步处理该规则。 否则,忽略此规则。 或者,如果当前用户配置文件不是系统配置文件,并且规则>部分的<上下文为 UserUserAndSystem,则会进一步处理该规则。 否则,忽略此规则。

    5. ScanState 通过处理此 <规则> 部分下的各个子部分来创建需要迁移的迁移单元列表。 如果在 include> 子节中<提到该单元,则收集每个单元,前提是同一规则部分中的 exclude> 子节中<没有更具体的规则>。< 有关 .xml 文件中的优先级的详细信息,请参阅 冲突和优先级

      此外,不会迁移位于 UnconditionalExclude> 节中的任何<迁移单元 (,例如文件、注册表项或注册表值集) 。

      注意

      ScanState 忽略某些子部分,例如 <destinationCleanup> 和 <locationModify>。 这些部分仅在目标计算机上进行评估。

  5. 收集 阶段, ScanState 通过组合为每个所选用户配置文件创建的列表来创建迁移单元的中心列表。

  6. 保存 阶段, ScanState 会将收集的迁移单元写入存储位置。

    注意

    ScanState 不会以任何方式修改源计算机。

LoadState 进程

LoadState 进程类似于 ScanState 进程。 ScanState 工具从源计算机收集迁移单元(如文件、注册表项或注册表值),并将其保存到存储区。 同样, LoadState 工具从存储中收集迁移单元并将其应用于目标计算机。

  1. ScanState 分析和验证命令行参数,创建 ScanState.log 文件,然后开始日志记录。

  2. LoadState 收集有关需要迁移的迁移组件的信息。

    LoadState 从由 命令指定的LoadState.exe迁移 .xml 文件中获取应用程序设置组件和用户数据组件的信息。

    在当前支持的 Windows 版本中,清单文件控制操作系统设置的迁移方式。 无法修改这些文件。 若要排除某些操作系统设置, Config.xml 必须创建并修改文件。

  3. LoadState 确定应迁移哪些用户配置文件。 默认情况下,将迁移源计算机上存在的所有用户配置文件。 但是,可以使用“用户 ”选项包含和排除用户。 始终迁移运行当前受支持的 Windows 版本的源计算机中的系统配置文件和公共配置文件,并且无法从迁移中排除这些配置文件。

    • 如果正在迁移本地用户帐户,并且目标计算机上尚不存在这些帐户, /lac 则必须使用命令行选项。 /lac如果未指定 选项,则不会迁移目标计算机上尚不存在的任何本地用户帐户。

    • 使用 LoadState.exe 命令指定时, /md 将处理 和 /mu 选项以重命名目标计算机上的用户配置文件。

    • 对于从存储中选择的每个用户配置文件, LoadState 会在目标计算机上创建相应的用户配置文件。 无需将目标计算机连接到域,就可以创建域用户配置文件。 如果 USMT 无法确定域,它会尝试将设置应用到本地帐户。 有关详细信息,请参阅 标识用户

  4. 扫描 阶段, LoadState 对每个用户配置文件执行以下操作:

    1. 对于每个组件, LoadState 会检查组件的类型。 如果当前用户配置文件是系统配置文件,并且组件类型为 SystemUserAndSystem,则会为此用户选择该组件。 否则,将忽略组件。 或者,如果当前用户配置文件不是系统配置文件,并且组件类型为 UserUserAndSystem,则会为此用户选择组件。 否则,将忽略此组件。

      注意

      从此开始, LoadState 不会区分迁移操作系统设置的组件、迁移应用程序设置的组件和迁移用户文件的组件。 LoadState 以相同的方式评估所有组件。

    2. 所选的每个组件将进一步处理。 任何特定于配置文件的变量 ((例如 CSIDL_PERSONAL) )都在当前配置文件的上下文中进行评估。 例如,如果正在处理的配置文件属于 User1,则 CSIDL_PERSONAL 会扩展为 C:\Users\User1\Documents (假设用户配置文件存储在 C:\Users 目录) 中。

      注意

      LoadState 忽略 <组件中指定的 detects> 节。 此时,所有指定的组件都被视为已检测到,并选择用于迁移。

    3. 对于每个选定的组件, LoadState<评估规则> 部分。 对于每个<规则>部分,如果当前用户配置文件是系统配置文件,而规则>部分的<上下文是 SystemUserAndSystem,则会进一步处理该规则。 否则,忽略此规则。 或者,如果当前用户配置文件不是系统配置文件,并且规则>部分的<上下文为 UserUserAndSystem,则会进一步处理该规则。 否则,忽略此规则。

    4. LoadState 通过处理规则>部分下的各个子部分来创建迁移单元的中心<列表。 包含子部分中的每个迁移单元<>都会迁移,因为同一规则部分中的排除>子节中<没有更具体的规则>。< 有关优先级的详细信息,请参阅 冲突和优先级

    5. LoadState 评估特定于目标计算机的子部分, <例如 destinationCleanup><locationModify> 子部分。

    6. 如果目标计算机运行的是当前受支持的 Windows 版本,则 ScanState 使用下层清单文件收集的 migunit 由 LoadState 使用下层 Windows 版本中的相应组件清单进行处理。 LoadState 期间不使用下层清单文件。

      重要提示

      要使 LoadState 使用 .xml 文件,请务必使用 LoadState.exe 命令指定它们。 否则,将忽略这些 .xml 文件中的任何特定于目标的规则(如 <locationModify>),即使命令运行时提供了ScanState.exe相同的 .xml 文件也是如此。

  5. “应用” 阶段, LoadState 会将收集的迁移单元写入目标计算机上的不同位置。 如果存在冲突并且对象没有 <合并> 规则,注册表的默认行为是源覆盖目标。 文件的默认行为是增量重命名源,例如 OriginalFileName (1) 。OriginalExtension。 某些设置(如字体、壁纸和屏幕保护程序设置)在用户下次登录之前才会生效。 因此,请在命令操作完成后注销 LoadState.exe