USMT のしくみ

USMT には、設定とデータを移行するためのツールとして、ScanState と LoadState の 2 つが用意されています。ScanState で移行元コンピューターの情報を収集し、LoadState でその情報を移行先コンピューターに適用します。

  • ScanState の処理

  • LoadState の処理

      

    USMT で規則と XML ファイルが処理される方法については、「競合と優先度」をご覧ください。

     

ScanState の処理

移行元コンピューターで ScanState ツールを実行すると、次の処理が行われます。

  1. コマンド ライン パラメーターの解析と検証が実行され、ScanState.log ファイルが作成された後、情報の収集が開始されます。

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

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

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

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

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

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

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

  3. ScanState によって、移行するユーザー プロファイルが決定されます。既定では、移行元コンピューターのすべてのユーザー プロファイルが移行されます。ユーザー オプションを使うことで、ユーザーを含めたり、除外したりできます。Windows 7、Windows 8、Windows 10 を実行している移行元コンピューターのパブリック プロファイルは必ず移行されます。これらのプロファイルを移行から除外することはできません。

  4. ScanState の "スキャン" の段階で、移行する各ユーザー プロファイルに対して次の処理が実行されます。

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

        

      これ以降、オペレーティング システム設定を移行するコンポーネント、アプリケーション設定を移行するコンポーネント、ユーザーのファイルを移行するコンポーネントは、すべて区別なく扱われます。すべてのコンポーネントが同じ方法で処理されます。

       

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

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

    4. 選択された各コンポーネントの <rules> セクションが評価されます。それぞれの <rules> セクションで、現在のユーザー プロファイルがシステム プロファイルであり、<rules> セクションのコンテキストが "System" または "UserAndSystem" の場合には、その規則が引き続き処理されます。それ以外の場合、その規則は無視されます。現在のユーザー プロファイルがシステム プロファイルではなく、<rules> セクションのコンテキストが "User" または "UserAndSystem" の場合には、その規則が引き続き処理されます。それ以外の場合、その規則は無視されます。

    5. この <rules> セクションの下にあるさまざまなサブセクションを処理することで、移行に必要な移行単位の一覧を作成します。<include> サブセクションに記載された移行単位が収集されます (同じ <rules> セクションの <exclude> サブセクションにその単位を対象とする規則が存在しない場合)。.xml ファイル内の優先度について詳しくは、「競合と優先度」をご覧ください。

      さらに、<UnconditionalExclude> セクションで指定されている移行単位 (ファイル、レジストリ キー、一連のレジスリ値など) はすべて移行されません。

        

      <destinationCleanup>、<locationModify> など、一部のサブセクションは無視されます。このようなセクションは移行先コンピューターでのみ評価されます。

       

  5. "収集" の段階では、選択された各ユーザー プロファイルに対して作成された移行単位一覧をまとめて、移行単位のマスター一覧が作成されます。

  6. "保存" の段階では、収集された移行単位が格納先に書き込まれます。

      

    移行元コンピューターには一切変更が加えられません。

     

LoadState の処理

LoadState の処理は ScanState の処理と非常に似ています。ScanState ツールでは、ファイル、レジストリ キー、レジスリ値などの移行単位を移行元コンピューターから収集し、それをストアに保存します。同様に、LoadState ツールではストアから移行単位を収集し、それを移行先コンピューターに適用します。

  1. ScanState によって、コマンド ライン パラメーターの解析と検証が実行され、ScanState.log ファイルが作成された後、情報の収集が開始されます。

  2. LoadState により、移行が必要な移行コンポーネントに関する情報が収集されます。

    LoadState によって、アプリケーション設定コンポーネントとユーザー データ コンポーネントに関する情報が、LoadState コマンドで指定された移行 .xml ファイルから取得されます。

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

  3. LoadState によって、移行するユーザー プロファイルが決定されます。既定では、移行元コンピューターのすべてのユーザー プロファイルが移行されます。ユーザー オプションを使うことで、ユーザーを含めたり、除外したりできます。システム プロファイル (Windows XP が実行されている移行元コンピューターの "All users" プロファイル)、または Windows Vista、Windows 7、Windows 8 が実行されている移行元コンピューターのパブリック プロファイルは必ず移行されます。これらのプロファイルを移行から除外することはできません。

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

    • LoadState コマンドを指定したときに /md オプションと /mu オプションを使った場合、これらのオプションが処理され、移行先コンピューターのユーザー プロファイルの名前が変更されます。

    • ストアで選択された各ユーザー プロファイルに対応するユーザー プロファイルが移行先コンピューターに作成されます。ドメイン ユーザー プロファイルを作成するために移行先コンピューターをドメインに接続する必要はありません。USMT でドメインを判別できない場合、ローカル アカウントへの設定の適用が試みられます。詳しくは、「ユーザーを識別する」をご覧ください。

  4. LoadState の "スキャン" の段階で、各ユーザー プロファイルに対して次の処理が実行されます。

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

        

      これ以降、オペレーティング システム設定を移行するコンポーネント、アプリケーション設定を移行するコンポーネント、ユーザーのファイルを移行するコンポーネントは、すべて区別なく扱われます。すべてのコンポーネントが同じ方法で評価されます。

       

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

        

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

       

    3. 選択された各コンポーネントの <rules> セクションが評価されます。それぞれの <rules> セクションで、現在のユーザー プロファイルがシステム プロファイルであり、<rules> セクションのコンテキストが "System" または "UserAndSystem" の場合には、その規則が引き続き処理されます。それ以外の場合、その規則は無視されます。現在のユーザー プロファイルがシステム プロファイルではなく、<rules> セクションのコンテキストが "User" または "UserAndSystem" の場合には、その規則が引き続き処理されます。それ以外の場合、その規則は無視されます。

    4. この <rules> セクションの下にあるさまざまなサブセクションを処理することで、移行単位のマスター一覧を作成します。<include> サブセクションに記載された移行単位がすべて収集されます (同じ <rules> セクションの <exclude> サブセクションにその単位を対象とする規則が存在しない場合)。優先度について詳しくは、「競合と優先度」をご覧ください。

    5. 移行先コンピューター固有のサブセクション (<destinationCleanup>、<locationModify> など) が評価されます。

    6. 移行先コンピューターで Windows 7 または Windows 8 が実行されている場合、ScanState でダウンレベルのマニフェスト ファイルを使って収集された migunit (移行単位) が、LoadState で対応する Windows 7 向けコンポーネント マニフェストを使って処理されます。ダウンレベルのマニフェスト ファイルは、LoadState の処理では使われません。

      重要  

      LoadState でこの .xml ファイルを使う場合、LoadState コマンドでこのファイルを指定することが重要です。そうしない場合、ScanState コマンドの実行時に .xml ファイルを指定していたとしても、同じ .xml ファイル内の移行先でのみ使われる規則 (<locationModify> など) が無視されます。

       

  5. "適用" の段階で、収集された移行単位が移行先コンピューターのさまざまな場所に書き込まれます。競合が発生したとき、そのオブジェクトに対する <merge> 規則がない場合、レジストリについては既定で移行元の情報によって移行先の情報が上書きされます。ファイルについては、既定で移行元のファイル名が変更され、数字が付加されます。たとえば、OriginalFileName(1).OriginalExtension というファイル名になります。一部の設定 (フォント、壁紙、スクリーン セーバーの設定など) は、次回ユーザーがログオンするまで反映されません。そのため、LoadState コマンドの処理が完了したときにログオフする必要があります。

関連トピック

User State Migration Tool (USMT) のコマンド ライン構文