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 に属している場合、ユーザー プロファイルがC:\Users ディレクトリに格納されていると仮定すると、CSIDL_PERSONALはC:\Users\User1\Documentsに展開されます。

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

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

    5. ScanState では 、この <rules> セクションのさまざまなサブセクションを処理して、移行する必要がある移行ユニットの一覧を作成します。 各ユニットは、同じ <rules> セクション内の <exclude> サブセクションに固有のルールがない限り、ユニットが <include> サブセクションに記載されている場合に収集されます。 .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 によってコンポーネントの種類が確認されます。 現在のユーザー プロファイルがシステム プロファイルであり、コンポーネントの種類が System または UserAndSystem の場合、このユーザーのコンポーネントが選択されます。 それ以外の場合、コンポーネントは無視されます。 または、現在のユーザー プロファイルがシステム プロファイルではなく、コンポーネントの種類が User または UserAndSystem の場合は、このユーザーに対してコンポーネントが選択されます。 それ以外の場合、このコンポーネントは無視されます。

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

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

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

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

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

    5. LoadState は、対象のコンピューター固有のサブセクション (たとえば、<destinationCleanup> および <locationModify> サブセクションなど) を評価します。

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

      重要

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

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