USMT のしくみ

USMT には、設定とデータを移行する 2 つのツール ( ScanStateLoadState) が含まれていますScanState は ソース コンピューターから情報を収集し、 LoadState はその情報を対象のコンピューターに適用します。

USMT がルールと XML ファイルを処理する方法の詳細については、「 競合と優先順位」を参照してください。

ScanState プロセス

ScanState ツールがソース コンピューターで実行されると、次のプロセスが実行されます。

  1. コマンド ライン パラメーターを解析して検証し、ファイルを ScanState.log 作成してから、ログ記録を開始します。

  2. 移行する必要があるすべての移行コンポーネントに関する情報が収集されます。 移行コンポーネントは、ファイル、レジストリ キー、値の論理グループです。 たとえば、Adobe Acrobat の設定を格納するファイル、レジストリ キー、値のセットは、1 つの移行コンポーネントにグループ化されます。

    コンポーネントには次の 3 種類があります。

    • オペレーティング システム設定を移行するコンポーネント。

    • アプリケーション設定を移行するコンポーネント。

    • ユーザーのファイルを移行するコンポーネント。

    ScanState ツールは、コマンド ラインで指定された .xml ファイルから、アプリケーション設定とユーザー データ コンポーネントに関する情報を収集します。

    現在サポートされているバージョンの Windows では、マニフェスト ファイルによってオペレーティング システム設定の移行方法が制御されます。 これらのファイルは変更できません。 特定のオペレーティング システム設定を除外するには、ファイルを Config.xml 作成して変更する必要があります。

  3. ScanState は、移行するユーザー プロファイルを決定します。 既定では、ソース コンピューター上のすべてのユーザー プロファイルが移行されます。 ただし、[ユーザー ] オプションを使用してユーザーを含め、除外できます。 現在サポートされているバージョンの Windows を実行しているソース コンピューターのシステム プロファイルとパブリック プロファイルは常に移行され、これらのプロファイルを移行から除外することはできません。

  4. スキャン フェーズでは、ScanState は移行用に選択されたユーザー プロファイルごとに次の処理を行います。

    1. コンポーネントごとに、 ScanState によって コンポーネントの種類が確認されます。 現在のユーザー プロファイルがシステム プロファイルであり、コンポーネントの種類が System または UserAndSystem の場合、このユーザーのコンポーネントが選択されます。 それ以外の場合、コンポーネントは無視されます。 または、現在のユーザー プロファイルがシステム プロファイルではなく、コンポーネントの種類が User または UserAndSystem の場合は、このユーザーに対してコンポーネントが選択されます。 それ以外の場合、このコンポーネントは無視されます。

      この時点から、 ScanState では、オペレーティング システム設定を移行するコンポーネント、アプリケーション設定を移行するコンポーネント、およびユーザーのファイルを移行するコンポーネントは区別されません。 ScanState は 、すべてのコンポーネントを同じ方法で処理します。

    2. 前の手順で選択した各コンポーネントは、さらに処理されます。 プロファイル固有の変数 ( CSIDL_PERSONAL など) は、現在のプロファイルのコンテキストで評価されます。 たとえば、処理中のプロファイルが User1 に属している場合、ユーザー プロファイルがディレクトリに格納されていると仮定して、CSIDL_PERSONAL が にC:\Users\User1\DocumentsC:\Users展開されます。

    3. 選択したコンポーネントごとに、ScanState はdetects セクションを<>評価します。 detects> セクションの条件が< false と評価された場合、コンポーネントはそれ以上処理されません。 それ以外の場合、このコンポーネントの処理は続行されます。

    4. 選択したコンポーネントごとに、ScanState によってルール> セクションが<評価されます。 ルール セクションごとに<>、現在のユーザー プロファイルがシステム プロファイルであり、ルール> セクションの<コンテキストが System または UserAndSystem の場合、ルールはさらに処理されます。 それ以外の場合、この規則は無視されます。 または、現在のユーザー プロファイルがシステム プロファイルではなく、ルール> セクションの<コンテキストが User または UserAndSystem の場合、ルールはさらに処理されます。 それ以外の場合、この規則は無視されます。

    5. ScanState では 、この <ルール> セクションのさまざまなサブセクションを処理して、移行する必要がある移行ユニットの一覧を作成します。 各ユニットは、同じ<>ルール セクションの除外>サブセクションに固有のルールがない限り、ユニットがインクルード サブセクションに<記載されている場合に収集されます。>< .xml ファイルの優先順位の詳細については、「競合と優先順位」を参照してください。

      さらに、無条件Exclude>セクションにある<移行ユニット (ファイル、レジストリ キー、レジストリ値のセットなど) は移行されません。

      ScanState では、destinationCleanup> や locationModify などの<一部のサブセクションが<無視されます>。 これらのセクションは、対象のコンピューターでのみ評価されます。

  5. 収集フェーズでは、ScanState は、選択したユーザー プロファイルごとに作成されたリストを組み合わせることで、移行ユニットの一元的なリストを作成します。

  6. 保存フェーズでは、ScanState は、収集された移行ユニットをストアの場所に書き込みます。

    ScanState では、ソース コンピューターは変更されません。

LoadState プロセス

LoadState プロセスは ScanState プロセスに似ています。 ScanState ツールは、ファイル、レジストリ キー、レジストリ値などの移行ユニットをソース コンピューターから収集し、ストアに保存します。 同様に、 LoadState ツールはストアから移行ユニットを収集し、移行先コンピューターに適用します。

  1. ScanState は 、コマンド ライン パラメーターを解析して検証し、ファイルを ScanState.log 作成してから、ログ記録を開始します。

  2. LoadState は、移行する必要がある移行コンポーネントに関する情報を収集します。

    LoadState は、コマンドで指定された移行 .xml ファイルから、アプリケーション設定コンポーネントとユーザー データ コンポーネントの情報を LoadState.exe 取得します。

    現在サポートされているバージョンの Windows では、マニフェスト ファイルによってオペレーティング システム設定の移行方法が制御されます。 これらのファイルは変更できません。 特定のオペレーティング システム設定を除外するには、ファイルを Config.xml 作成して変更する必要があります。

  3. LoadState は、移行するユーザー プロファイルを決定します。 既定では、ソース コンピューターに存在するすべてのユーザー プロファイルが移行されます。 ただし、[ユーザー ] オプションを使用してユーザーを含め、除外できます。 現在サポートされているバージョンの Windows を実行しているソース コンピューターのシステム プロファイルとパブリック プロファイルは常に移行され、これらのプロファイルを移行から除外することはできません。

    • ローカル ユーザー アカウントが移行中で、アカウントがまだ移行先コンピューターに存在しない場合は、コマンド ライン オプションを /lac 使用する必要があります。 オプションが /lac 指定されていない場合、移行先のコンピューターにまだ存在しないローカル ユーザー アカウントは移行されません。

    • コマンドでLoadState.exe指定すると、 オプションと /mu オプションが処理され、/md対象コンピューターのユーザー プロファイルの名前が変更されます。

    • ストアから選択したユーザー プロファイルごとに、 LoadState によって、対象のコンピューターに対応するユーザー プロファイルが作成されます。 ドメイン ユーザー プロファイルを作成するために、移行先コンピューターをドメインに接続する必要はありません。 USMT がドメインを特定できない場合は、設定をローカル アカウントに適用しようとします。 詳細については、「 ユーザーの識別」を参照してください。

  4. スキャン フェーズでは、LoadState はユーザー プロファイルごとに次の処理を行います。

    1. コンポーネントごとに、 LoadState によってコンポーネントの種類が確認されます。 現在のユーザー プロファイルがシステム プロファイルであり、コンポーネントの種類が System または UserAndSystem の場合、このユーザーのコンポーネントが選択されます。 それ以外の場合、コンポーネントは無視されます。 または、現在のユーザー プロファイルがシステム プロファイルではなく、コンポーネントの種類が User または UserAndSystem の場合は、このユーザーに対してコンポーネントが選択されます。 それ以外の場合、このコンポーネントは無視されます。

      この時点から、 LoadState では、オペレーティング システム設定を移行するコンポーネント、アプリケーション設定を移行するコンポーネント、およびユーザーのファイルを移行するコンポーネントは区別されません。 LoadState は、すべてのコンポーネントを同じ方法で評価します。

    2. 選択された各コンポーネントは、さらに処理されます。 プロファイル固有の変数 ( CSIDL_PERSONAL など) は、現在のプロファイルのコンテキストで評価されます。 たとえば、処理中のプロファイルが User1 に属している場合、 CSIDL_PERSONAL は に C:\Users\User1\Documents 展開されます (ユーザー プロファイルがディレクトリに C:\Users 格納されていると仮定します)。

      LoadState は、コンポーネントで <指定された detects> セクションを無視します。 この時点で、指定されたすべてのコンポーネントが検出されると見なされ、移行用に選択されます。

    3. 選択したコンポーネントごとに、LoadState によってルール> セクションが<評価されます。 ルール セクションごとに<>、現在のユーザー プロファイルがシステム プロファイルであり、ルール> セクションの<コンテキストが System または UserAndSystem の場合、ルールはさらに処理されます。 それ以外の場合、この規則は無視されます。 または、現在のユーザー プロファイルがシステム プロファイルではなく、ルール> セクションの<コンテキストが User または UserAndSystem の場合、ルールはさらに処理されます。 それ以外の場合、この規則は無視されます。

    4. LoadState は、rules> セクションの下にあるさまざまなサブセクションを処理することで、移行ユニットの一元的なリストを<作成します。 インクルード> サブセクション内の<各移行ユニットは、同じルール セクションの除外>サブセクションに<、より具体的なルール>がないため、移行されます。< 優先順位の詳細については、「 競合と優先順位」を参照してください。

    5. LoadState は、変換先のコンピューター固有のサブセクション (destinationCleanup> や locationModify サブセクションなど<) を評価します。><

    6. ターゲット コンピューターで現在サポートされているバージョンの Windows が実行されている場合、ダウンレベル マニフェスト ファイルを使用して ScanState によって収集された migunit は、下位レベルの Windows バージョンの対応するコンポーネント マニフェストを使用して LoadState によって処理されます。 ダウンレベル マニフェスト ファイルは 、LoadState 中には使用されません。

      重要

      LoadState.xml ファイルを使用するには、 コマンドをLoadState.exe使用してファイルを指定することが重要です。 それ以外の場合、コマンドの実行時に同じ .xml ファイルが指定された場合でも、これらの .xml ファイル内の locationModify> などの<宛先固有のScanState.exe規則は無視されます。

  5. 適用フェーズでは、LoadState は、収集された移行ユニットを移行先コンピューターのさまざまな場所に書き込みます。 競合があり、オブジェクトのマージ> 規則がない<場合、レジストリの既定の動作は、ソースが宛先を上書きすることです。 ファイルの既定の動作は、ソースの名前を段階的に変更することです (たとえば、OriginalFileName(1)。OriginalExtension。 フォント、壁紙、スクリーン セーバーの設定など、一部の設定は、ユーザーが次回ログオンするまで有効になりません。 このため、コマンド アクションが LoadState.exe 完了したらサインアウトします。