次の方法で共有


XML 要素ライブラリ

この記事では、ユーザー状態移行ツール (USMT) で使用する移行 .xml ファイルを作成するために使用できる XML 要素とヘルパー関数について説明します。 この記事では、XML の基本的な知識を前提としています。

XML 要素とヘルパー関数に加えて、次の記事を参照してください。

  • エンコードされた場所と場所のパターンを指定する方法について説明します。
  • 内部 USMT 用の関数は、 のみを使用します。
  • ヘルパー関数で使用できるバージョン タグ。

要素とヘルパー関数

次の表では、USMT で使用できる XML 要素とヘルパー関数について説明します。

要素 A から K 要素 L から Z ヘルパー関数
<addObjects>
<属性>
<バイト>
<commandLine>
<コンポーネント>
<条件>
<条件>
<コンテンツ>
<contentModify>
<形容>
<destinationCleanup>
<見付ける>
<検出>
<検出>
<displayName>
<環境>
<exclude>
<excludeAttributes>
<拡張 機能>
<延長>
<externalProcess>
<アイコン>
<含める>
<includeAttribute>
<図書館>
<場所>
<locationModify>
<_locDefinition>
<生産者>
<マージ>
<移動>
<namedElements>
<object>
<objectSet>
<パス>
<パス>
<パターン>
<加工>
<plugin>
<役割>
<準則>
<スクリプト>
<テキスト>
<無条件Exclude>
<変数>
<バージョン>
<windowsObjects>
<condition> 関数
<content> 関数
<contentModify> 関数
<include> と <exclude> filter 関数
<locationModify> 関数
<merge> 関数
<script> 関数
内部 USMT 関数

<addObjects>

<addObjects> 要素は、ソース コンピューター上の 1 つ以上のオブジェクトの存在をエミュレートします。 子 <object> 要素は、エミュレートされたオブジェクトの詳細を提供します。 コンテンツが <script> 要素の場合、呼び出しの結果は オブジェクトの配列です。

構文:

<addObjects>
</addObjects>

次の例は、 MigApp.xml ファイルの例です。

<addObjects>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [UpgradeVersion]</location>
      <attributes>DWORD</attributes>
      <bytes>0B000000</bytes>
   </object>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
      <attributes>DWORD</attributes>
      <bytes>00000000</bytes>
   </object>
</addObjects>

<属性>

<attributes> 要素は、レジストリ キーまたはファイルの属性を定義します。

構文:

<attributes>Content</attributes>
設定 必須かどうか
コンテンツ はい コンテンツは、指定されたオブジェクトの種類によって異なります。
  • ファイルの場合、コンテンツには、コンマで区切られた次のいずれかの属性を含む文字列を指定できます。
    • アーカイブ
    • 読み取り専用かどうか
    • System
    • Hidden
  • レジストリ キーの場合、コンテンツには次のいずれかの種類を指定できます。
    • なし
    • String
    • ExpandString
    • バイナリ
    • Dword
    • REG_SZ

次の例は、 MigApp.xml ファイルの例です。

<object>
   <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
   <attributes>DWORD</attributes>
   <bytes>00000000</bytes>
</object> 

<バイト>

<bytes> 要素は、<location>がレジストリ キーまたはディレクトリに対応する場合、<bytes> は無視されるため、ファイルにのみ指定できます。

  • 出現回数: 0 または 1

  • 親要素:<object>

  • 子要素: なし

構文:

<bytes string="Yes|No" expand="Yes|No">Content</bytes>
設定 必須かどうか
文字列 いいえ、既定値は No です Content を文字列として解釈するか、バイトとして解釈するかを決定します。
expand いいえ (既定値 = はい) expand パラメーターが Yes の場合、 <bytes> 要素の内容は、最初にソース コンピューターのコンテキストで展開され、次に解釈されます。
コンテンツ はい 文字列の値によって異なります。
  • 文字列が Yes の場合: <バイトの内容>要素は文字列として解釈されます。
  • 文字列が No の場合: <バイトの内容>要素はバイトとして解釈されます。 2 文字ごとに、バイトの 16 進値が表されます。 たとえば、 616263 は、 abc ANSI 文字列の表現です。 文字列終端記号を含む UNICODE 文字列 abc の完全な表現は、 6100620063000000です。

次の例は、 MigApp.xml ファイルの例です。

<object>
   <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
   <attributes>DWORD</attributes>
   <bytes>00000000</bytes>
</object> 

<commandLine>

<commandLine> 要素は、ScanState ツールと LoadState ツールを実行する前または実行後に、サービスまたはアプリケーションを開始または停止するために使用できます。

構文:

<commandLine>CommandLineString</commandLine>
設定 必須かどうか
CommandLineString はい 有効なコマンド ライン。

<コンポーネント>

カスタム.xml ファイルには 、<component> 要素が必要です。 この要素は、移行.xmlファイルの最も基本的なコンストラクト 定義します。 たとえば、MigApp.xml ファイルの Microsoft Office 2016 は、別のコンポーネントである Microsoft Office Access 2016を含むコンポーネントです。 子要素を使用して、コンポーネントを定義できます。

コンポーネントは、別のコンポーネント内に入れ子にすることができます。つまり、<component> 要素は、<component> 要素内の <role> 要素の子である場合があります。

  1. <コンポーネント> 要素がコンテナーである場合
  2. <コンポーネントの場合> 要素は親 <component> 要素と同じロールを持ちます。

構文:

<component type="System|Application|Device|Documents" context="User|System|UserAndSystem" defaultSupported="TRUE|FALSE|YES|NO"
hidden="Yes|No">
</component>
設定 必須かどうか
はい 次の項目を使用して、設定をグループ化し、コンポーネントの種類を定義できます。
  • 制: オペレーティング システムの設定。 すべての Windows コンポーネントは、この種類によって定義されます。
    type="System" とdefaultSupported="FALSE" の場合、LoadState.exe コマンド ラインで指定されている .xml ファイルに同等のコンポーネントがない限り、設定は移行されません。 たとえば、既定の MigSys.xml ファイルには 、type="System" とdefaultSupported="FALSE" のコンポーネントが含まれています。 このファイルを ScanState.exe コマンド ラインで指定する場合、設定を移行するには、 LoadState.exe コマンド ラインにもファイルを指定する必要があります。 LoadState.exe ツールで同等のコンポーネントを検出する必要があるため、ファイルを指定する必要があります。 つまり、コンポーネントには、 .xml ファイルの同じ移行 urlid と同じ表示名が必要です。 それ以外の場合、 LoadState ツールはそれらの設定をストアから移行しません。 この設定は、ソース コンピューターと同じバージョンまたは異なるバージョンの Windows の対象コンピューターにストアを使用できるため便利です。
  • アプリケーション: アプリケーションの設定。
  • デバイス: デバイスの設定。
  • 書類: ファイルを指定します。
context なし
既定値 = UserAndSystem
このパラメーターのスコープを定義します。つまり、特定のユーザーのコンテキスト、オペレーティング システム全体、またはその両方でこのコンポーネントを処理するかどうかです。
可能な最大のスコープは、 <component> 要素によって設定されます。 たとえば、<component> 要素に User のコンテキストがあり、<rules>要素に UserAndSystem のコンテキストがある場合、<rules> 要素は User のコンテキストがあるかのように動作します <rules> 要素に System のコンテキストがある場合、<rules> 要素が存在しないかのように動作します。
  • ユーザー: 各ユーザーのコンポーネントを評価します。
  • システム: システムに対して 1 回だけコンポーネントを評価します。
  • UserAndSystem: オペレーティング システム全体と各ユーザーのコンポーネントを評価します。
defaultSupported なし
(既定値 = TRUE)
TRUEFALSEYES、または NO のいずれかを指定できます。 このパラメーターが FALSE (または NO) の場合、対象のコンピューターに同等のコンポーネントがない限り、コンポーネントは移行されません。
type="System" とdefaultSupported="FALSE" の場合、LoadState.exe コマンド ラインで指定されている .xml ファイルに同等のコンポーネントがない限り、設定は移行されません。 たとえば、既定の MigSys.xml ファイルには 、type="System" とdefaultSupported="FALSE" のコンポーネントが含まれています。 このファイルを ScanState.exe コマンド ラインで指定する場合、設定を移行するには、 LoadState.exe コマンド ラインにもファイルを指定する必要があります。 LoadState ツールは同等のコンポーネントを検出する必要があるため、両方のコマンド ラインでファイルを指定する必要があります。 つまり、コンポーネントには、 .xml ファイルと同じ表示名の同じ移行 urlid が必要です。または 、LoadState ツールはそれらの設定をストアから移行しません。 この設定は、ソース コンピューターと同じバージョンまたは異なるバージョンの Windows の対象コンピューターにストアを使用できるため便利です。
隠れた このパラメーターは、USMT の内部でのみ使用されます。

例については、既定の移行 .xml ファイルのいずれかを参照してください。

<条件>

<detect>、<objectSet>、<addObjects> 要素の下の <condition> 要素は引き続きサポートされていますが、今後のバージョンの USMT で非推奨になる可能性があるため、<condition> 要素は使用しなくなりました。 <condition> 要素が非推奨の場合は、<condition> 要素を使用するすべてのスクリプトの書き換えが必要になります。 代わりに、<objectSet> および <addObjects> 要素内で条件を使用する必要がある場合は、より強力な <conditions> 要素を使用することをお勧めします。 <conditions> 要素を使用すると、複雑な Boolean ステートメントを作成できます。

<condition> 要素にはブール値の結果があります。 この要素を使用して、親要素が評価される条件を指定できます。 現在の条件のいずれかが FALSE を返す場合、親要素は評価されません。

  • 出現回数: 無制限。

  • 親要素:<conditions><detect><objectSet><addObjects>

  • 子要素: なし

  • ヘルパー関数:次の<condition> 関数は、DoesOSMatchIsNative64Bit()IsOSLaterThanIsOSEarlierThanDoesObjectExistDoesFileVersionMatchIsFileVersionAboveIsFileVersionBelowIsSystemContextDoesStringContentEqualDoesStringContentContainIsSameObjectIsSameContentIsSameStringContentの各要素で使用できます。

構文:

<condition negation="Yes|No">ScriptName</condition>
設定 必須かどうか
否定 なし
既定値 = いいえ
"はい" は 、条件の True/False 値を反転します。
ScriptName はい この移行セクション内で定義されているスクリプト。

たとえば、次のコード サンプルでは、<condition> 要素 ABAND 演算子によって結合されます。これは、<conditions> セクションに分かれているためです。

<detection>
   <conditions>
      <condition>A</condition>
   </conditions>
   <conditions operation="AND">
      <condition>B</condition>
   </conditions>
</detection>

ただし、次のコード サンプルでは、<condition> 要素 AB は、同じ <conditions> セクションにあるため、OR 演算子によって結合されます。

<detection>
   <conditions>
      <condition>A</condition>
      <condition>B</condition>
   </conditions>
</detection>

<condition> 関数

<condition> 関数はブール値を返します。 これらの要素は、 <addObjects> 条件で使用できます。

オペレーティング システムのバージョン関数

  • DoesOSMatch

    すべての一致は大文字と小文字を区別しません。

    構文: DoesOSMatch("OSType","OSVersion")

    設定 必須かどうか
    OSType はい この設定の有効な値は NT のみです。 ただし、この設定は、 <condition> 関数が正常に動作するように設定する必要があります。
    OSVersion はい 期間で区切られたメジャー バージョン、マイナー バージョン、ビルド番号、修正されたサービス ディスケット バージョン。 例: 5.0.2600.Service Pack 1。 バージョンの部分指定は、 5.0.*などのパターンで指定することもできます。

    次に、例を示します。

    <condition>MigXmlHelper.DoesOSMatch("NT","\*")</condition>
    
  • IsNative64Bit

    移行プロセスがネイティブの 64 ビット プロセスとして実行されている場合、 IsNative64Bit 関数は TRUE を 返します。つまり、Windows 上の Windows (WOW) のない 64 ビット システムで実行されているプロセスです。 それ以外の場合は FALSE を返します

  • IsOSLaterThan

    すべての比較では、大文字と小文字が区別されません。

    構文: IsOSLaterThan("OSType","OSVersion")

    設定 必須かどうか
    OSType はい 9x または NT を指定できます。 OSType が現在のオペレーティング システムの種類と一致しない場合は、FALSE が返されます。 たとえば、現在のオペレーティング システムがWindows NTベースで、OSType"9x" の場合、結果は FALSE になります
    OSVersion 期間で区切られたメジャー バージョン、マイナー バージョン、ビルド番号、修正されたサービス ディスケット バージョン。 例: 5.0.2600.Service Pack 1。 バージョンの部分的な指定も指定できますが、 5.0などのパターンは許可されません。

    現在のオペレーティング システムが OSVersion 以上の場合、IsOSLaterThan 関数は TRUE を返します。

    次に、例を示します。

    <condition negation="Yes">MigXmlHelper.IsOSLaterThan("NT","6.0")</condition>
    
  • IsOSEarlierThan

    すべての比較では、大文字と小文字が区別されません。

    構文: IsOSEarlierThan("OSType","OSVersion")

    設定 必須かどうか
    OSType はい 9x または NT を指定できます。 OSType が現在のオペレーティング システムの種類と一致しない場合は、FALSE が返されます。 たとえば、現在のオペレーティング システムがWindows NTベースで、OSType"9x" の場合、結果は FALSE になります
    OSVersion 期間で区切られたメジャー バージョン、マイナー バージョン、ビルド番号、修正されたサービス ディスケット バージョン。 例: 5.0.2600.Service Pack 1。 バージョンの部分的な指定も指定できますが、 5.0などのパターンは許可されません。

    現在のオペレーティング システムが OSVersion より前の場合、IsOSEarlierThan 関数は TRUE を返します。

オブジェクト コンテンツ関数

  • DoesObjectExist

    場所パターンに一致するオブジェクトが存在する場合、DoesObjectExist 関数は TRUE を 返します。 それ以外の場合は FALSE を返します。 位置パターンは、列挙を試行する前に展開されます。

    構文: DoesObjectExist("ObjectType","EncodedLocationPattern")

    設定 必須かどうか
    ObjectType はい オブジェクトの種類を定義します。 ファイルまたはレジストリを指定できます。
    EncodedLocationPattern はい 場所パターン。 環境変数は許可されます。

    この要素の例については、 MigApp.xml ファイルを参照してください。

  • DoesFileVersionMatch

    パターン チェックでは大文字と小文字が区別されません。

    構文: DoesFileVersionMatch("EncodedFileLocation","VersionTag","VersionValue")

    設定 必須かどうか
    EncodedFileLocation はい チェックされるファイルの 場所パターン 。 環境変数は許可されます。
    VersionTag オンになっている バージョン タグ の値。
    VersionValue 文字列パターン。 たとえば、"Microsoft*" です。

    次に、例を示します。

    <condition>MigXmlHelper.DoesFileVersionMatch("%MSNMessengerInstPath%\\msnmsgr.exe","ProductVersion","6.\*")</condition>   <condition>MigXmlHelper.DoesFileVersionMatch("%MSNMessengerInstPath%\\msnmsgr.exe","ProductVersion","7.\*")</condition>
    
  • IsFileVersionAbove

    ファイルのバージョンが VersionValue より大きい場合、IsFileVersionAbove 関数は TRUE を返します。

    構文: IsFileVersionAbove("EncodedFileLocation","VersionTag","VersionValue")

    設定 必須かどうか
    EncodedFileLocation はい チェックされるファイルの 場所パターン 。 環境変数は許可されます。
    VersionTag はい オンになっている バージョン タグ の値。
    VersionValue はい 比較対象の値。 パターンを指定できません。
  • IsFileVersionBelow

    構文: IsFileVersionBelow("EncodedFileLocation","VersionTag","VersionValue")

    設定 必須かどうか
    EncodedFileLocation はい チェックされるファイルの 場所パターン 。 環境変数は許可されます。
    VersionTag はい オンになっている バージョン タグ の値。
    VersionValue はい 比較対象の値。 パターンを指定できません。
  • IsSystemContext

    現在のコンテキストが "System" の場合、IsSystemContext 関数は TRUE を返します。 それ以外の場合は FALSE を返します

    構文: IsSystemContext()

  • DoesStringContentEqual

    指定されたオブジェクトの文字列表現がStringContentと同じ場合、DoesStringContentEqual 関数は TRUE を返します。

    構文: DoesStringContentEqual("ObjectType","EncodedLocation","StringContent")

    設定 必須かどうか
    ObjectType はい オブジェクトの型を定義します。 ファイルまたはレジストリを指定できます。
    EncodedLocationPattern はい 調べられたオブジェクトの エンコードされた場所 。 環境変数は指定できます。
    StringContent はい チェック対象の文字列。

    次に、例を示します。

    <condition negation="Yes">MigXmlHelper.DoesStringContentEqual("File","%USERNAME%","")</condition>
    
  • DoesStringContentContain

    オブジェクトの文字列表現で StrToFind が少なくとも 1 回出現する場合、DoesStringContentContain 関数は TRUE を返します。

    構文: DoesStringContentContain("ObjectType","EncodedLocation","StrToFind")

    設定 必須かどうか
    ObjectType はい オブジェクトの型を定義します。 ファイルまたはレジストリを指定できます。
    EncodedLocationPattern はい 調べられたオブジェクトの エンコードされた場所 。 環境変数は指定できます。
    StrToFind はい 指定されたオブジェクトのコンテンツ内で検索される文字列。
  • IsSameObject

    指定されたエンコードされた場所が同じ物理オブジェクトに解決された場合、 IsSameObject 関数は TRUE を 返します。 それ以外の場合は FALSE を返します

    構文: IsSameObject("ObjectType","EncodedLocation1","EncodedLocation2")

    設定 必須かどうか
    ObjectType はい オブジェクトの型を定義します。 ファイルまたはレジストリを指定できます。
    EncodedLocation1 はい 最初のオブジェクトの エンコードされた場所 。 環境変数は指定できます。
    EncodedLocation2 はい 2 番目のオブジェクトの エンコードされた場所 。 環境変数は指定できます。

    次に、例を示します。

    <objectSet>
       <condition negation="Yes">MigXmlHelper.IsSameObject("File","%CSIDL_FAVORITES%","%CSIDL_COMMON_FAVORITES%")</condition>
       <pattern type="File">%CSIDL_FAVORITES%\* [*]</pattern>
    </objectSet>
    
  • IsSameContent

    IsSameContent 関数は、指定されたオブジェクトの内容が同じ場合に TRUE を返します。 それ以外の場合は FALSE を返します。 コンテンツはバイト単位で比較されます。

    構文: IsSameContent("ObjectType1","EncodedLocation1","ObjectType2","EncodedLocation2")

    設定 必須かどうか
    ObjectType1 はい 最初のオブジェクトの型を定義します。 ファイルまたはレジストリを指定できます。
    EncodedLocation1 最初のオブジェクトの エンコードされた場所 。 環境変数は指定できます。
    ObjectType2 はい 2 番目のオブジェクトの型を定義します。 ファイルまたはレジストリを指定できます。
    EncodedLocation2 はい 2 番目のオブジェクトの エンコードされた場所 。 環境変数は指定できます。
  • IsSameStringContent

    IsSameStringContent 関数は、指定されたオブジェクトに同じコンテンツがある場合に TRUE を返します。 それ以外の場合は FALSE を返します。 コンテンツは文字列として解釈されます。

    構文: IsSameStringContent("ObjectType1","EncodedLocation1","ObjectType2","EncodedLocation2")

    設定 必須かどうか
    ObjectType1 はい 最初のオブジェクトの型を定義します。 ファイルまたはレジストリを指定できます。
    EncodedLocation1 最初のオブジェクトの エンコードされた場所 。 環境変数は指定できます。
    ObjectType2 はい 2 番目のオブジェクトの型を定義します。 ファイルまたはレジストリを指定できます。
    EncodedLocation2 はい 2 番目のオブジェクトの エンコードされた場所 。 環境変数は指定できます。

<条件>

<conditions> 要素は、親要素が評価される条件を指定するために使用されるブール値の結果を返します。 USMT は子要素を評価し、操作パラメーターに従って演算子 AND または OR を使用して結果を結合します。

構文:

<conditions operation="AND|OR">
</conditions>
設定 必須かどうか
操作 いいえ、既定値 = AND 子要素から取得した結果に対して実行されるブール演算を定義します。

次の例は、 MigApp.xml ファイルの例です。

<environment name="GlobalEnv">
   <conditions>
      <condition negation="Yes">MigXmlHelper.IsNative64Bit()</condition>
   </conditions>
   <variable name="HklmWowSoftware">
   <text>HKLM\Software</text>
   </variable>
</environment>

<コンテンツ>

<content> 要素を使用して、ソース コンピューターからオブジェクト セットを取得するオブジェクト パターンの一覧を指定できます。 < content>要素内の各<objectSet>が評価されます。 結果のオブジェクト パターン リストごとに、それに一致するオブジェクトが列挙され、その内容が filter パラメーターによってフィルター処理されます。 結果の文字列配列は、 <content> 要素の出力です。 フィルター スクリプトは、場所の配列を返します。 親 <objectSet> 要素には、複数の子<content>要素を含めることができます。

  • 出現回数: 無制限

  • 親要素:<objectSet>

  • 子要素:<objectSet>

  • ヘルパー関数:次の<content> 関数は、ExtractSingleFileExtractMultipleFiles、および ExtractDirectory の要素で使用できます。

構文:

<content filter="ScriptInvocation">
</content>
設定 必須かどうか
filter はい スクリプトの後に、コンマで区切られ、かっこで囲まれた任意の数の文字列引数が続きます。 例: MyScripts.AScript ("Arg1","Arg2")
スクリプトは、 <include> ルール内のオブジェクト セットによって列挙される各オブジェクトに対して呼び出されます。 フィルター スクリプトはブール値を返します。 戻り値が TRUE の場合、オブジェクトは移行されます。 FALSE の場合、移行されません。

<content> 関数

次の関数は、オブジェクトのコンテンツからパターンを生成します。 これらの関数は、親 <ObjectSet> 要素が列挙しているすべてのオブジェクトに対して呼び出されます。

  • ExtractSingleFile

    レジストリ値が MULTI-SZ の場合、最初のセグメントのみが処理されます。 返されるパターンは、システム上に存在する必要があるファイルのエンコードされた場所です。 指定がレジストリ値で正しく、ファイルが存在しない場合、この関数は NULL を返します。

    構文: ExtractSingleFile(Separators,PathHints)

    設定 必須かどうか
    区切り 記号 はい このレジストリ値名のファイル仕様に従う可能性のある区切り記号の一覧。 たとえば、コンテンツが "C:\Windows\Notepad.exe,-2" の場合、区切り記号はコンマです。 NULL を 指定できます。
    PathHints はい コロン (;) で区切られた追加パスの一覧。ここで、関数は現在のコンテンツに一致するファイルを検索します。 たとえば、コンテンツが "Notepad.exe" で、パスが %Path% 環境変数である場合、関数は %windir% でNotepad.exe を検索し、"c:\Windows [Notepad.exe]" を返します。 NULL を 指定できます。

    次に、例を示します。

    <content filter="MigXmlHelper.ExtractSingleFile(',','%system%')">
    

    および

    <content filter="MigXmlHelper.ExtractSingleFile(NULL,'%CSIDL_COMMON_FONTS%')">
    
  • ExtractMultipleFiles

    ExtractMultipleFiles 関数は、指定されたレジストリ値の内容にあるファイルごとに 1 つずつ、複数のパターンを返します。 レジストリ値が MULTI-SZ の場合、 MULTI-SZ 区切り記号は既定で区切り記号と見なされます。 そのため、MULTI-SZ場合、<Separators> 引数は NULL である必要があります。

    返されるパターンは、ソース コンピューターに存在する必要があるファイルのエンコードされた場所です。 指定がレジストリ値で正しく、ファイルが存在しない場合、結果の一覧には含まれません。

    構文: ExtractMultipleFiles(Separators,PathHints)

    設定 必須かどうか
    区切り 記号 はい このレジストリ値名のファイル仕様に従う可能性のある区切り記号の一覧。 たとえば、コンテンツが "C:\Windows\Notepad.exe,-2" の場合、区切り記号はコンマです。 MULTI-SZ レジストリ値を処理する場合、このパラメーターは NULL である必要があります。
    PathHints はい コロン (;) で区切られた追加パスの一覧。ここで、関数は現在のコンテンツに一致するファイルを検索します。 たとえば、コンテンツが "Notepad.exe" で、パスが %Path% 環境変数である場合、関数は %windir% でNotepad.exe を検索し、"c:\Windows [Notepad.exe]" を返します。 NULL を 指定できます。
  • ExtractDirectory

    ExtractDirectory 関数は、ソース コンピューターに存在する必要があるディレクトリのエンコードされた場所であるパターンを返します。 指定がレジストリ値で正しく、ディレクトリが存在しない場合、この関数は NULL を返します。 MULTI-SZ であるレジストリ値を処理している場合は、最初のセグメントのみが処理されます。

    構文: ExtractDirectory(Separators,LevelsToTrim,PatternSuffix)

    設定 必須かどうか
    区切り 記号 なし このレジストリ値名のファイル仕様に従う可能性のある区切り記号の一覧。 たとえば、コンテンツが "C:\Windows\Notepad.exe,-2" の場合、区切り記号はコンマです。 MULTI-SZ レジストリ値を処理する場合は、NULL を指定する必要があります。
    LevelsToTrim ディレクトリ指定の末尾から削除するレベルの数。 既知の場所のルート ディレクトリ内を指すレジストリ値がある場合は、この関数を使用してルート ディレクトリを抽出します。
    PatternSuffix はい ディレクトリ仕様に追加するパターン。 例: * [*]

    次に、例を示します。

    <objectSet>
       <content filter='MigXmlHelper.ExtractDirectory (NULL, "1")'>
            <objectSet>
                 <pattern type="Registry">%HklmWowSoftware%\Classes\Software\RealNetworks\Preferences\DT_Common []</pattern>
            </objectSet>
       </content>
    </objectSet>
    

<contentModify>

<contentModify> 要素は、オブジェクトがコピー先コンピューターに書き込まれる前に、オブジェクトの内容を変更します。 <contentModify>要素ごとに、複数の<objectSet>要素を指定できます。 この要素は、処理中のオブジェクトの新しいコンテンツを返します。

  • 出現回数: 無制限の

  • 親要素:<rules>

  • 必須の子要素:<objectSet>

  • ヘルパー関数: 次の <contentModify> 関数 は、 ConvertToDWORDConvertToStringConvertToBinaryKeepExistingOffsetValueSetValueByTableMergeMultiSzContentMergeDelimitedContent の各要素で使用できます。

構文:

<contentModify script="ScriptInvocation">
</contentModify>
設定 必須かどうか
スクリプト はい スクリプトの後に、コンマで区切られ、かっこで囲まれた任意の数の文字列引数が続きます。 例えば MyScripts.AScript ("Arg1","Arg2").

スクリプトは、インクルード 規則のオブジェクト セットによって列挙される各オブジェクトに対して呼び出されます。 フィルター スクリプトはブール値を返します。 戻り値が TRUE の場合、オブジェクトは移行されます。 FALSE の場合、移行されません。

<contentModify> 関数

次の関数は、移行時にオブジェクトの内容を変更します。 これらの関数は、親 <ObjectSet> 要素が列挙しているすべてのオブジェクトに対して呼び出されます。

  • ConvertToDWORD

    ConvertToDWORD 関数は、親 <ObjectSet> 要素によって列挙されるレジストリ値の内容を DWORD に変換します。 たとえば、 ConvertToDWORD は、 "1" 文字列を DWORD 0x00000001に変換します。 変換が失敗した場合は、 DefaultValueOnError の値が適用されます。

    構文: ConvertToDWORD(DefaultValueOnError)

    設定 必須かどうか
    DefaultValueOnError なし 変換が失敗した場合に値名に書き込まれる値。 NULL を 指定でき、変換が失敗した場合に 0 が書き込まれます。
  • ConvertToString

    ConvertToString 関数は、親 <ObjectSet> 要素と一致するレジストリ値の内容を文字列に変換します。 たとえば、DWORD 0x00000001 を文字列 "1" に変換します。 変換が失敗した場合は、 DefaultValueOnError の値が適用されます。

    構文: ConvertToString(DefaultValueOnError)

    設定 必須かどうか
    DefaultValueOnError なし 変換が失敗した場合に値名に書き込まれる値。 NULL を 指定でき、変換が失敗した場合に 0 が書き込まれます。

    次に、例を示します。

    <contentModify script="MigXmlHelper.ConvertToString('1')">
       <objectSet>
            <pattern type="Registry">HKCU\Control Panel\Desktop [ScreenSaveUsePassword]</pattern>
       </objectSet>
    </contentModify>
    
  • ConvertToBinary

    ConvertToBinary 関数は、親 <ObjectSet> 要素と一致するレジストリ値の内容をバイナリ型に変換します。

    構文: ConvertToBinary ()

  • OffsetValue

    OffsetValue 関数は、移行されたオブジェクトの値から Value を加算または減算し、結果をコピー先コンピューターのレジストリ値に書き戻します。 たとえば、移行されたオブジェクトが 14 の値を持つ DWORD で、 "-2" の場合、レジストリ値は移行先コンピューターで 12 されます。

    構文: OffsetValue(Value)

    設定 必須かどうか
    Value 数値の文字列表現。 正または負の場合があります。 例: OffsetValue(2)
  • SetValueByTable

    SetValueByTable 関数は、ソース コンピューターからソース テーブルへの値と一致します。 値が存在する場合は、変換先テーブル内の同等の値が適用されます。 値が存在しない場合、または変換先テーブルに同等の値がない場合は、 DefaultValueOnError が適用されます。

    構文: SetValueByTable(SourceTable,DestinationTable,DefaultValueOnError)

    設定 必須かどうか
    SourceTable はい ソース レジストリ値に使用できるコンマで区切られた値の一覧。
    DestinationTable なし コンマで区切られた翻訳された値の一覧。
    DefaultValueOnError なし いずれかの場合に対象コンピューターに適用される値
    1. ソース コンピューターの値が SourceTable と一致しない
    2. DestinationTable には同等の値はありません。

    DefaultValueOnErrorNULL の場合、ターゲット コンピューターでは値は変更されません。
  • KeepExisting

    KeepExisting 関数は、対象のコンピューターで競合が発生した場合に使用できます。 この関数は、対象のコンピューター上にあるオブジェクトの指定した属性を保持 (上書きしません) します。

    構文: KeepExisting("OptionString","OptionString","OptionString",…)

    設定 必須かどうか
    OptionString はい OptionString には、 SecurityTimeFields、または FileAttrib:Letter を指定できます。 OptionStrings の種類ごとに 1 つを指定できます。 同じ値を持つ複数 の OptionString を 指定しないでください。 同じ値を持つ複数 の OptionString を 指定すると、その型の最も右のオプションが保持されます。 たとえば、読み取り専用のみが評価されるため 、("FileAttrib:H"、"FileAttrib:R") を 指定しないでください。 代わりに 、("FileAttrib:HR") を 指定し、非表示属性と読み取り専用属性の両方が対象コンピューターに保持されます。
    • セキュリティ: ターゲット オブジェクトのセキュリティ記述子が存在する場合は保持します。
    • TimeFields: 宛先オブジェクトのタイム スタンプを保持します。 このパラメーターはファイル専用です。
    • FileAttrib:<レター>: 指定したファイル属性のセットに対して、変換先オブジェクトの属性値 ( ON または OFF) を保持します。 このパラメーターはファイル専用です。 大文字と小文字は区別されませんが、無効な値、繰り返される値、または FileAttrib: の後にスペースがある場合、USMT は無視されます。 次の属性の任意の組み合わせを指定できます。
      • A = アーカイブ
      • C = 圧縮
      • E = Encrypted
      • H = 非表示
      • I = インデックスが作成されたコンテンツではない
      • O = オフライン
      • R = Read-Only
      • S = システム
      • T = 一時
  • MergeMultiSzContent

    MergeMultiSzContent 関数は、親 <ObjectSet> 要素によって列挙されるレジストリ値の MULTI-SZ コンテンツを、コピー先コンピューターに既に存在する同等のレジストリ値の内容とマージします。 InstructionString 、結果の MULTI-SZ にコンテンツを削除または追加します。 重複する要素が削除されます。

    構文: MergeMultiSzContent (Instruction,String,Instruction,String,…)

    設定 必須かどうか
    命令 はい 次のいずれかの値を指定できます。
    • 追加します。 まだ存在しない場合は、対応する String を結果の MULTI-SZ に追加します。
    • 削除します。 結果の MULTI-SZ から対応する String を削除します。
    String 追加または削除する文字列。
  • MergeDelimitedContent

    MergeDelimitedContent 関数は、親 <ObjectSet> 要素によって列挙されるレジストリ値の内容を、コピー先コンピューターに既に存在する同等のレジストリ値の内容とマージします。 コンテンツは、区切り記号パラメーター内のいずれかの文字で区切られた要素の一覧と見なされます。 重複する要素が削除されます。

    構文: MergeDelimitedContent(Delimiters,Instruction,String,…)

    設定 必須かどうか
    区切り 記号 はい 処理中のオブジェクトの内容を分離するために使用される 1 文字。 コンテンツは、 区切り記号で区切られた要素の一覧と見なされます。
    たとえば、 "." はピリオドに基づいて文字列を区切ります。
    命令 次のいずれかの値を指定できます。
    • 追加: まだ存在しない場合は、結果の MULTI-SZ に 文字列 を追加します。
    • 削除: 結果の MULTI-SZ から 文字列 を削除します。
    String はい 追加または削除する文字列。

<形容>

<description> 要素は、コンポーネントの説明を定義しますが、移行には影響しません。

  • 出現回数: 0 または 1

  • 親要素:<component>

  • 子要素: なし

構文:

<description>ComponentDescription</description>
設定 必須かどうか
ComponentDescription はい コンポーネントの説明。

次のコード サンプルは、 <description> 要素が "My custom component" の説明を定義する方法を示しています。

<description>My custom component<description>

<destinationCleanup>

<destinationCleanup> 要素は、ソース コンピューターからオブジェクトを適用する前に、ファイルやレジストリ キーなどのオブジェクトをコピー先コンピューターから削除します。 この要素は、 LoadState ツールが対象のコンピューターで実行されている場合にのみ評価されます。 つまり、この要素は ScanState ツールによって無視されます。

重要

このオプションは、対象のコンピューターからオブジェクトを削除するため、細心の注意を払って使用してください。

<destinationCleanup>要素ごとに、複数の<objectSet>要素を指定できます。 この要素の一般的な用途は、ソース コンピューターにレジストリ キーが見つからないが、コンポーネントを移行する必要がある場合です。 この場合、ソース レジストリ キーを移行する前に、コンポーネントのすべてのレジストリ キーを削除できます。 コンポーネントのすべてのレジストリ キーを削除すると、ソース コンピューターにキーが見つからない場合は、対象のコンピューターにも存在しなくなります。

  • 出現回数: 無制限の

  • 親要素:<rules>

  • 子要素:<objectSet> (対象のコンピューターは、すべての子要素を削除します)。

構文:

<destinationCleanup filter=ScriptInvocation>
</destinationCleanup>
設定 必須かどうか
filter はい スクリプトの後に、コンマで区切られ、かっこで囲まれた任意の数の文字列引数が続きます。 例: MyScripts.AScript ("Arg1","Arg2")

スクリプトは、インクルード 規則のオブジェクト セットによって列挙される各オブジェクトに対して呼び出されます。 フィルター スクリプトはブール値を返します。 戻り値が TRUE の場合、オブジェクトは移行されます。 FALSE の場合、移行されません。

次に、例を示します。

<destinationCleanup>
   <objectSet>
      <pattern type="Registry">HKCU\Software\Lotus\123\99.0\DDE Preferences\* [*]</pattern>
      <pattern type="Registry">HKCU\Software\Lotus\123\99.0\Find Preferences\* [*]</pattern>
   </objectSet>
</destinationCleanup>

<見付ける>

<detect> 要素は引き続きサポートされていますが、今後のバージョンの USMT で非推奨になる可能性があるため、<detect> 要素を使用することは推奨されなくなりました。 <detect> 要素が非推奨の場合は、<detect> 要素を使用するすべてのスクリプトの書き換えが必要になります。 代わりに、 <detection> 要素を使用することをお勧めします。 <detection> 要素を使用すると、より明確に定式化された複雑な Boolean ステートメントを使用できます。

<detect> 要素を使用して、コンポーネントがシステムに存在するかどうかを判断できます。 すべての子<detect><detect 内の要素>要素が TRUE に解決された場合、<detect> 要素は TRUE に解決されます。 子 <detect> 要素が FALSE に解決された場合、その親 <detect> 要素は FALSE に解決されます。 <detect> 要素セクションがない場合、USMT はコンポーネントが存在することを前提としています。

各<detect>要素には、複数の子<condition>または <objectSet> 要素があり、これは OR 演算子によって論理的に結合されます。 少なくとも 1 つの <condition> または <objectSet> 要素が TRUE と評価された場合、 <detect> 要素は TRUE と評価されます。

構文:

<detect name="ID" context="User|System|UserAndSystem">
</detect>
設定 必須かどうか
name はい。<detect>namedElements を<する子です>
いいえ。 <detect> は、 <detects の子です>
ID を指定すると、子要素は処理されません。 代わりに、<namedElements> 要素内で宣言されているのと同じ名前の他の<detect>要素が処理されます。
context なし
(既定値 = UserAndSystem)
このパラメーターのスコープを定義します。これは、特定のユーザーのコンテキストで、オペレーティング システム全体、またはその両方でこのコンポーネントを処理するかどうかです。
可能な最大のスコープは、コンポーネント要素によって設定されます。 たとえば、 <コンポーネント> 要素に User のコンテキストがあり、 <rules> 要素に UserAndSystem のコンテキストがある場合、 <rules> 要素は User のコンテキストがあるかのように動作 します <rules> 要素に System のコンテキストがある場合、<rules> 要素が存在しないかのように動作します。
  • ユーザー: 各ユーザーの変数を評価します。
  • システム: システムに対して 1 回だけ変数を評価します。
  • UserAndSystem: オペレーティング システム全体と各ユーザーの変数を評価します。

例については、 <detection> の例を参照してください。

<検出>

<detects> 要素は引き続きサポートされていますが、今後のバージョンの USMT で非推奨になる可能性があるため、<detects> 要素を使用しなくなりました。 <detects> 要素が非推奨になった場合は、<detects> 要素を使用するすべてのスクリプトの書き換えが必要になります。 代わりに、親要素が <role> または <namedElements> の場合は <detection> 要素を使用するか、親要素が <rules である場合は <conditions> 要素を使用することをお勧めします>。 <detection> 要素を使用すると、より明確に定式化された複雑な Boolean ステートメントが可能になり、<conditions> 要素を使用すると、複雑な Boolean ステートメントを作成できます。

<detects> 要素は、1 つ以上の<detect>要素のコンテナーです。 すべての子<detect><detects 内の要素>要素が TRUE に解決された場合、<detects>TRUE に解決されます。 いずれかの子 <detect> 要素が FALSE に解決された場合、 <detects>FALSE に解決されます。 <detects> 要素がコンポーネント内に書き込まれるのを防ぐには、<namedElements> 要素の下に <detects> 要素を作成し、それを参照します。 <detects> 要素セクションがない場合、USMT はコンポーネントが存在することを前提としています。 各 <detects> 要素の結果は、 OR 演算子によって結合され、親要素の検出に使用されるルールを形成します。

構文:

<detects name="ID" context="User|System|UserAndSystem">
</detects>
設定 必須かどうか
name はい。<detects の場合>は <namedElements の子です>
いいえ。<detects の場合>は、<role> または <rules の子です>
ID を指定すると、子<detect>要素は処理されません。 代わりに、<namedElements>> 要素内で宣言されているのと同じ名前の他の<detects要素が処理されます。
context なし
(既定値 = UserAndSystem)
このパラメーターのスコープを定義します。このコンポーネントを特定のユーザーのコンテキスト、オペレーティング システム全体、またはその両方で処理するかどうか。
可能な最大のスコープは、 <component 要素>によって設定されます。 たとえば、 <コンポーネント> 要素に User のコンテキストがあり、 <rules> 要素に UserAndSystem のコンテキストがある場合、 <rules> 要素は User のコンテキストがあるかのように動作します。 <rules> 要素に System のコンテキストがある場合、<rules> 要素が存在しないかのように動作します。
  • ユーザー: 各ユーザーの変数を評価します。
  • システム: システムに対して 1 回だけ変数を評価します。
  • UserAndSystem: オペレーティング システム全体と各ユーザーの変数を評価します。

context パラメーターは、<rules> 要素内にある<detects> 要素では無視されます。

次の例は、 MigApp.xml ファイルの例です。

<detects>
   <detect>
      <condition>MigXmlHelper.DoesFileVersionMatch("%Lotus123InstPath%\123w.exe","ProductVersion","9.*")</condition>
   </detect>
   <detect>
      <condition>MigXmlHelper.DoesFileVersionMatch("%SmartSuiteInstPath%\smartctr.exe","ProductVersion","99.*")</condition>
   </detect>
</detects>

<検出>

<detection> 要素は、1 つの <conditions> 要素のコンテナーです。 <conditions> 要素の下にある子<condition>要素の結果によって、この要素の結果が決まります。 たとえば、すべての子<条件><detection 内の要素>要素が TRUE に解決された場合、<detection> 要素は TRUE に解決されます。 子<条件のいずれかが FALSE に解決された場合>要素は FALSE に解決され、<detection> 要素は FALSE に解決されます。

さらに、<role> 要素内の各 <detection> セクションの結果が OR 演算子によって結合され、親要素の検出ルールが形成されます。 つまり、<検出の 1 つ>セクションが TRUE に解決された場合、<role> 要素が処理されます。 それ以外の場合、 <role> 要素は処理されません。

< namedElements> 要素の下の <detection> 要素を使用して、コンポーネント内に書き込む必要はありません。 次に、<role> 要素の下に一致する<detection> セクションを含め、コンポーネントを移行するかどうかを制御します。 コンポーネントに <detection> セクションがない場合、USMT はコンポーネントが存在することを前提としています。

構文:

<detection name="ID" context="User|System|UserAndSystem">
</detection>
設定 必須かどうか
name
  • はい。<検出の場合>は <namedElements で宣言されます>
  • 省略可能(<role で宣言されている場合>
宣言した場合、<detection> 要素の内容は無視され、<namedElements> 要素で宣言されたのと同じ名前の<detection> 要素の内容が評価されます。
context いいえ、既定値 = UserAndSystem このパラメーターのスコープを定義します。このコンポーネントを特定のユーザーのコンテキスト、オペレーティング システム全体、またはその両方で処理するかどうか。
  • ユーザー: 各ユーザーのコンポーネントを評価します。
  • システム: システムに対して 1 回だけコンポーネントを評価します。
  • UserAndSystem: オペレーティング システム全体と各ユーザーのコンポーネントを評価します。

次に、例を示します。

<detection name="AdobePhotoshopCS">
   <conditions>
      <condition>MigXmlHelper.DoesObjectExist("Registry","HKCU\Software\Adobe\Photoshop\8.0")</condition>
      <condition>MigXmlHelper.DoesFileVersionMatch("%PhotoshopSuite8Path%\Photoshop.exe","FileVersion","8.*")</condition>
   </conditions>
</detection>

および

<role role="Settings">
   <detection>
      <conditions>
         <condition>MigXmlHelper.DoesFileVersionMatch("%QuickTime5Exe%","ProductVersion","QuickTime 5.*")</condition>
         <condition>MigXmlHelper.DoesFileVersionMatch("%QuickTime5Exe%","ProductVersion","QuickTime 6.*")</condition>
      </conditions>
   </detection>

<displayName>

<displayName> 要素は、各 <component> 要素内の必須フィールドです。

  • 出現回数: コンポーネントごとに 1 回

  • 親要素:<component>

  • 子要素: なし

構文:

<displayName _locID="ID">ComponentName</displayName>
設定 必須かどうか
locID なし このパラメーターは、USMT の内部使用を目的とします。 このパラメーターは使用しないでください。
ComponentName はい コンポーネントの名前。

次に、例を示します。

<displayName>Command Prompt settings</displayName>

<環境>

<environment> 要素は、.xml ファイルで使用するために変数を定義できる<variable> 要素のコンテナーです。 この方法で定義されているすべての環境変数はプライベートです。 つまり、子コンポーネントと定義されたコンポーネントに対してのみ使用できます。 2 つのシナリオ例については、「 」を参照してください。

構文:

<environment name="ID" context="User|System|UserAndSystem">
</environment>
設定 必須かどうか
name はい。<environment><namedElements の子です>
いいえ。<environment の場合><role> または <component の子です>
<role> または <component> 要素の子として宣言された場合、ID が宣言されている場合、USMT は <environment> 要素の内容と、<namedElements で宣言された同じ名前を持つ <environment> 要素の内容を無視します> 要素が処理されます。
context なし
(既定値 = UserAndSystem)
このパラメーターのスコープを定義します。このコンポーネントを特定のユーザーのコンテキスト、オペレーティング システム全体、またはその両方で処理するかどうか。
可能な最大のスコープは、 <component> 要素によって設定されます。 たとえば、 <コンポーネント> 要素に User のコンテキストがあり、 <rules> 要素に UserAndSystem のコンテキストがある場合、 <rules> 要素は User のコンテキストがあるかのように動作します。 <rules>要素に System のコンテキストがある場合は、<rules>が存在しないかのように動作します。
  • ユーザー: 各ユーザーの変数を評価します。
  • システム: システムに対して 1 回だけ変数を評価します。
  • UserAndSystem: オペレーティング システム全体と各ユーザーの変数を評価します。

シナリオ 1 の例

このシナリオでは、対象のコンピューターの構成に応じて、実行時にオブジェクトの場所を生成します。 たとえば、アプリケーションがインストールされているディレクトリにデータを書き込み、ユーザーがコンピューター上の任意の場所にアプリケーションをインストールできる場合です。 アプリケーションが hklm\software\companyname\install [path\] レジストリ値を書き込み、アプリケーションがインストールされている場所でこの値を更新する場合、必要なデータを正しく移行する唯一の方法は、環境変数を定義することです。 次に、例を示します。

<environment>
   <variable name="INSTALLPATH">
      <script>MigXmlHelper.GetStringContent("Registry","\software\companyname\install [path]")</script>
   </variable>
</environment>

次に、include ルールを次のように使用できます。 <script>関数のいずれかを使用して、同様のタスクを実行できます。

<include>
   <objectSet>
      <pattern type="File">%INSTALLPATH%\ [*.xyz]</pattern>
   </objectSet>
</include>

次に、レジストリ値をフィルター処理して、必要なデータを含めることができます。 次の例では、レジストリ Hklm\software\companyname\application\ [Path\]の値の最初の文字列 (区切り記号 "," の前) を抽出します。

<environment>
   <variable name="APPPATH">
        <objectSet>
           <content filter='MigXmlHelper.ExtractDirectory (",", "1")'>
             <objectSet>
                <pattern type="Registry">Hklm\software\companyname\application\ [Path]</pattern>
              </objectSet>
            </content>
        </objectSet>
    </variable>
</environment>

シナリオ 2 の例

このシナリオでは、 File1.txtFile2.txtなどの名前の 5 つのファイルを %SYSTEMDRIVE%\data\userdata\dir1\dir2\から移行する必要があります。 これらのファイルを移行するには、次の<>規則を.xmlファイルに含める必要があります。

<include>
   <objectSet>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File1.txt]</pattern>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File2.txt]</pattern>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File3.txt]</pattern>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File4.txt]</pattern>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File5.txt]</pattern>
   </objectSet>
</include>

パスを 5 回入力する代わりに、次のように場所の変数を作成します。

<environment>
   <variable name="DATAPATH">
      <text>%SYSTEMDRIVE%\data\userdata\dir1\dir2 </text>
      </variable>
</environment>

次に、次のように、<include> ルールで変数を指定します。

<include>
   <objectSet>
      <pattern type="File">%DATAPATH% [File1.txt]</pattern>
      <pattern type="File">%DATAPATH% [File2.txt]</pattern>
      <pattern type="File">%DATAPATH% [File3.txt]</pattern>
      <pattern type="File">%DATAPATH% [File4.txt]</pattern>
      <pattern type="File">%DATAPATH% [File5.txt]</pattern>
   </objectSet>
</include>

<exclude>

<exclude> 要素は、オブジェクトを移行するより具体的な<>要素がない限り移行されないオブジェクトを決定します。 同じオブジェクトに<><exclude>要素がある場合、そのオブジェクトが含まれます。 <exclude>要素ごとに、複数の子<objectSet>要素を指定できます。

構文:

<exclude filter="ScriptInvocation">
</exclude>
設定 必須かどうか
filter なし
(既定値 = いいえ)
スクリプトの後に、コンマで区切られ、かっこで囲まれた任意の数の文字列引数が続きます。 例: MyScripts.AScript ("Arg1","Arg2")

スクリプトは、インクルード 規則のオブジェクト セットによって列挙される各オブジェクトに対して呼び出されます。 フィルター スクリプトはブール値を返します。 戻り値が TRUE の場合、オブジェクトは移行されます。 FALSE の場合、移行されません。

たとえば、 MigUser.xml ファイルから:

<exclude>
   <objectSet>
      <pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
      <pattern type="File">%CSIDL_MYPICTURES%\* [*]</pattern>
      <pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
   </objectSet>
</exclude>

<excludeAttributes>

<excludeAttributes> 要素を使用して、移行されないオブジェクトに関連付けられているパラメーターを決定できます。 <includeAttributes><excludeAttributes> 要素の間に競合がある場合は、移行されないパターンが最も具体的なパターンによって決まります。 オブジェクトに <includeAttributes> または <excludeAttributes> 要素がない場合、そのすべてのパラメーターが移行されます。

構文:

<excludeAttributes attributes="Security|TimeFields|Security,TimeFields">
</excludeAttributes>
設定 必須かどうか
属性 除外する属性を指定します。 次のいずれか、または両方を指定できます。 両方を指定する場合は、引用符で区切る必要があります。 たとえば、次 "Security","TimeFields"
  • セキュリティには、所有者、グループ、DACL、または SACL のいずれかを指定できます。
  • TimeFields には、CreationTime、LastAccessTime、LastWrittenTime のいずれかを指定できます

例:

<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/miguser">
<!-- This component migrates the files in the Video folder -->
   <component type="System" context="System">
      <displayName>System Data</displayName>
         <role role="Data">
            <rules>
<!-- Include all of the text files, which are immediately in the drive where the operating system is installed -->
               <include>
                  <objectSet>
                     <pattern type="File">%SYSTEMDRIVE%\ [*.txt]</pattern>
                  </objectSet>
               </include>
<!-- Exclude the time stamps from the text file starting with the letter a -->
               <excludeAttributes attributes="TimeFields">
                  <objectSet>
                     <pattern type="File">%SYSTEMDRIVE%\ [a*.txt]</pattern>
                  </objectSet>
               </excludeAttributes>
<!-- include the time stamps from the text file aa.txt -->
               <includeAttributes attributes="TimeFields">
                  <objectSet>
                     <pattern type="File">%SYSTEMDRIVE%\ [aa.txt]</pattern>
                  </objectSet>
               </includeAttributes>
<!-- Logoff the user after LoadState successfully completed. -->
               <externalProcess when="post-apply">
                  <commandLine>
                     logoff
                  </commandLine>
               </externalProcess>
         </rules>
   </role>
<!-- Migrate 
   all doc files from the system
   all power point files
   all visio design files 
   all my c++ program files -->
   <extensions>
      <extension>DOC</extension>
      <extension>PPT</extension>
      <extension>VXD</extension>
      <extension>PST</extension>
      <extension>CPP</extension>
   </extensions>
</component>
</migration>

<拡張 機能>

<extensions> 要素は、1 つ以上の <extension> 要素のコンテナーです。

構文:

<extensions>
</extensions>

<延長>

<extension> 要素を使用して、特定の拡張機能のドキュメントを指定できます。

  • 出現回数: 無制限

  • 親要素:<extensions>

  • 子要素: なし

構文:

<extension>FilenameExtension</extension>
設定 必須かどうか
FilenameExtension はい ファイル名拡張子。

たとえば、すべての *.doc ファイルをソース コンピューターから移行するには、 <component> 要素の下に次のコードを指定します。

<extensions> 
        <extension>doc</extension> 
<extensions> 

は、 <rules> 要素の下に次のコードを指定する場合と同じです。

<include> 
        <objectSet> 
                <script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc]", "Fixed")</script> 
        </objectSet> 
</include>

<extension> 要素の使用方法の別の例については、<excludeAttributes> の例を参照してください。

<externalProcess>

<externalProcess> 要素を使用して、移行プロセス中にコマンド ラインを実行できます。 たとえば、 LoadState プロセスの完了後にコマンドを実行する必要がある場合があります。

構文:

<externalProcess when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</externalProcess>
設定 必須かどうか
いつ はい コマンド ラインを実行するタイミングを示します。 この値には、次のいずれかの値を指定できます。
  • スキャンプロセスが開始される前に、事前スキャンを実行します。
  • スキャン プロセスが正常に完了した後のスキャン成功。
  • スキャンプロセスが完了した後、スキャンが成功したかどうかに関係なく、スキャン後
  • 適用 プロセスが開始される前に事前に適用されます。
  • 適用プロセスが正常に完了した後、apply-success
  • が成功したかどうかにかかわらず、申請プロセスが完了した後にポスト適用されます。

<externalProcess> 要素の使用方法の例については、<excludeAttributes> の例を参照してください。

<アイコン>

この要素は、内部 USMT 要素です。 この要素は使用しないでください。

<含める>

<include> 要素は、より具体的な<exclude>規則がない限り、移行する対象を決定します。 収集する必要がある内容の定義を拡張するために、スクリプトをより具体的に指定できます。 < > 要素ごとに、複数の<objectSet>要素を指定できます。

  • 出現回数: 無制限の

  • 親要素:<rules>

  • 必須の子要素:<objectSet>

  • ヘルパー関数:次の<>フィルター関数は、CompareStringContentIgnoreIrrelevantLinksAnswerNoNeverRestoreの各要素で使用できます。

構文:

<include filter="ScriptInvocation">
</include>
設定 必須かどうか
filter いいえ、そうではありません。
このパラメーターが指定されていない場合は、子 <objectSet> 要素内にあるすべてのパターンが処理されます。
スクリプトの後に、コンマで区切られ、かっこで囲まれた任意の数の文字列引数が続きます。 例: MyScripts.AScript ("Arg1","Arg2")
スクリプトは、 <include> ルール内のオブジェクト セットによって列挙される各オブジェクトに対して呼び出されます。 フィルター スクリプトはブール値を返します。 戻り値が TRUE の場合、オブジェクトは移行されます。 FALSE の場合、移行されません。

次の例は、 MigUser.xml ファイルの例です。

<component type="Documents" context="User">
   <displayName _locID="miguser.myvideo">My Video</displayName>
      <paths>
         <path type="File">%CSIDL_MYVIDEO%</path>
      </paths>
      <role role="Data">
         <detects>           
            <detect>
               <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYVIDEO%")</condition>
            </detect>
         </detects>
         <rules>
               <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                  <objectSet>
                     <pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
                  </objectSet>
               </include>
               <merge script="MigXmlHelper.DestinationPriority()">
                  <objectSet>
                     <pattern type="File">%CSIDL_MYVIDEO% [desktop.ini]</pattern>
                  </objectSet>
            </merge>
         </rules>
      </role>
    </component>

<include> と <exclude> filter 関数

次の関数はブール値を返します。 特定の条件が満たされた場合に基づいて特定のオブジェクトを移行するために使用できます。

  • AnswerNo

    このフィルターは常に FALSE を返します

    構文: AnswerNo ()

  • CompareStringContent

    構文: CompareStringContent("StringContent","CompareType")

    設定 必須かどうか
    StringContent はい チェックする文字列。
    CompareType はい 文字列。 次のいずれかの値を使用します。
    • 等しい (大文字と小文字は区別されません)。 移行エンジンによって処理される現在のオブジェクトの文字列表現がStringContentと同じ場合、関数は TRUE を返します。
    • NULLまたはその他の値。 移行エンジンによって処理される現在のオブジェクトの文字列表現がStringContentと一致しない場合、関数は TRUE を返します。
  • IgnoreIrrelevantLinks

    このフィルター は、対象 のコンピューターで無効なオブジェクトを指す.lnk ファイルを除外します。 スクリーニングはコピー先のコンピューターで行われるので、 すべての.lnk ファイルが ScanState 中にストアに保存されます。 次に、 LoadState ツールの実行時に画面が表示されます。

    構文: IgnoreIrrelevantLinks ()

    次に、例を示します。

    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
         <objectSet>
              <pattern type="File">%CSIDL_COMMON_VIDEO%\* [*]</pattern>
         </objectSet>
    </include>
    
  • NeverRestore

    この関数を使用すると、指定したオブジェクトをソース コンピューターから収集できますが、オブジェクトを移行先のコンピューターに移行することはできません。 ScanState ツールを使用して実行すると、この関数は TRUE と評価されます。 LoadState ツールを使用して実行すると、この関数は FALSE と評価されます。 この関数は、対象のコンピューターでオブジェクトの値をチェックするために使用される場合がありますが、オブジェクトを移行先に移行する意図はありません。

    構文: NeverRestore()

    次の例では、HKCU\コントロール パネル\International [Locale] がストアに含まれていますが、移行先のコンピューターには移行されません。

    <include filter="MigXmlHelper.NeverRestore()">
       <objectSet>
          <pattern type="Registry">HKCU\Control Panel\International [Locale]</pattern>
       </objectSet>
    </include>
    

<includeAttributes>

<includeAttributes> 要素を使用して、オブジェクトに関連付けられている特定のパラメーターがオブジェクト自体と共に移行されるかどうかを判断できます。 <includeAttributes><excludeAttributes> 要素の間に競合がある場合、移行されるパラメーターは最も具体的なパターンによって決まります。 オブジェクトに <includeAttributes> または <excludeAttributes> 要素がない場合、そのすべてのパラメーターが移行されます。

構文:

<includeAttributes attributes="Security|TimeFields|Security,TimeFields">
</includeAttributes>
設定 必須かどうか
属性 はい 移行されたオブジェクトに含める属性を指定します。 次のいずれか、または両方を指定できます。 両方を指定する場合は、引用符で区切る必要があります。 たとえば、次 "Security","TimeFields"
  • セキュリティには、次のいずれかの値を指定できます。
    • 所有者: オブジェクト (SID) の所有者。
    • グループ: オブジェクト (SID) のプライマリ グループ。
    • DACL (随意アクセス制御リスト): オブジェクトの所有者によって制御され、特定のユーザーまたはグループがオブジェクトに対して持ち得るアクセスを指定するアクセス制御リスト。
    • SACL (システム アクセス制御リスト): セキュリティ保護可能なオブジェクトへのアクセス試行の監査メッセージの生成を制御する ACL。 オブジェクトの SACL を取得または設定する機能は、通常、システム管理者のみが保持する特権によって制御されます。
  • TimeFields には、次のいずれかの値を指定できます。
    • CreationTime: ファイルまたはディレクトリが作成されたタイミングを指定します。
    • LastAccessTime: ファイルが最後に読み取られたり、書き込まれたり、実行可能ファイルに対して実行されたりするタイミングを指定します。
    • LastWrittenTime: ファイルの最後の書き込み、切り捨て、または上書きを行うタイミングを指定します。

<includeAttributes> 要素の使用方法の例については、<excludeAttributes> の例を参照してください。

<図書館>

この要素は、内部 USMT 要素です。 この要素は使用しないでください。

<場所>

<location> 要素は、<object> 要素の場所を定義します。

  • 出現回数:<オブジェクトごとに 1 回>

  • 親要素:<object>

  • 子要素:<script>

構文:

<location type="typeID">ObjectLocation</location>
設定 必須かどうか
はい typeID には、レジストリまたはファイルを指定できます。
ObjectLocation オブジェクトの場所。

次の例は、 MigApp.xml ファイルの例です。

<addObjects>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [UpgradeVersion]</location>
      <attributes>DWORD</attributes>
      <bytes>0B000000</bytes>
   </object>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
      <attributes>DWORD</attributes>
      <bytes>00000000</bytes>
   </object>
</addObjects>

<locationModify>

<locationModify> 要素を使用して、オブジェクトを移行先コンピューターに移行する前に、オブジェクトの場所と名前を変更できます。 <locationModify> 要素は、LoadState ツールが対象コンピューターで実行されている場合にのみ処理されます。 つまり、この要素は ScanState ツールによって無視されます。 <locationModify> 要素は、まだ存在しない場合は、対象のコンピューターに適切なフォルダーを作成します。

出現回数: 無制限の

構文:

<locationModify script="ScriptInvocation">
</locationModify>
設定 必須かどうか
スクリプト はい スクリプトの後に、コンマで区切られ、かっこで囲まれた任意の数の文字列引数が続きます。 例: MyScripts.AScript ("Arg1","Arg2")

スクリプトは、インクルード 規則のオブジェクト セットによって列挙される各オブジェクトに対して呼び出されます。 フィルター スクリプトはブール値を返します。 戻り値が TRUE の場合、オブジェクトは移行されます。 FALSE の場合、移行されません。

次の例は、 MigApp.xml ファイルの例です。

<locationModify script="MigXmlHelper.RelativeMove('%CSIDL_APPDATA%\Microsoft\Office','%CSIDL_APPDATA%')">
   <objectSet>
      <pattern type="File">%CSIDL_APPDATA%\Microsoft\Office\ [Access10.pip]</pattern>
   </objectSet>
</locationModify>

<locationModify> 関数

次の関数は、 <locationModify> 要素を使用するときに移行されるオブジェクトの場所を変更します。 これらの関数は、親 <objectSet> 要素が列挙するすべてのオブジェクトに対して呼び出されます。 <locationModify> 要素は、まだ存在しない場合は、対象のコンピューターに適切なフォルダーを作成します。

  • ExactMove

    ExactMove 関数は、親 <objectSet> 要素によって一致するすべてのオブジェクトを、指定された ObjectEncodedLocation に移動します。 この関数を使用すると、1 つのファイルをコピー先コンピューター上の別の場所に移動できます。 宛先の場所がノードの場合、一致するすべてのソース オブジェクトがサブディレクトリなしでノードに書き込まれます。 移行先の場所がリーフの場合、移行エンジンは、一致するすべてのソース オブジェクトを同じ場所に移行します。 競合が発生した場合は、通常の競合アルゴリズムが適用されます。

    構文: ExactMove(ObjectEncodedLocation)

    設定 必須かどうか
    ObjectEncodedLocation はい すべてのソース オブジェクトの宛先の 場所

    次に、例を示します。

    <locationModify script="MigXmlHelper.ExactMove('HKCU\Keyboard Layout\Toggle [HotKey]')">
       <objectSet>
            <pattern type="Registry">HKCU\Keyboard Layout\Toggle []</pattern>
       </objectSet>
    </locationModify>
    
  • 動く

    Move 関数は、対象のコンピューター上の別の場所にオブジェクトを移動します。 さらに、この関数は、ソース オブジェクト名で最も長い CSIDL を超えるサブディレクトリを作成します。

    構文: Move(DestinationRoot)

    設定 必須かどうか
    DestinationRoot はい ソース オブジェクトが移動される場所。 必要に応じて、この関数はソース オブジェクト名で最も長い CSIDL を超えたサブディレクトリを作成します。
  • RelativeMove

    RelativeMove 関数を使用して、データの収集と移動を行うことができます。 環境変数は、ソースルートと移行先ルートで使用できますが、ソースコンピューターと移行先コンピューターで異なる方法で定義される場合があります。

    構文: RelativeMove(SourceRoot,DestinationRoot)

    設定 必須かどうか
    SourceRoot はい オブジェクトの移動元の場所。 親 <objectSet> 要素によって列挙されたソース オブジェクトは移動されません。
    DestinationRoot はい コピー元のオブジェクトが移動先のコンピューター上の に移動される場所。 必要に応じて、この関数は SourceRoot より上のサブディレクトリを作成します。

次に、例を示します。

<include>
   <objectSet>
      <pattern type="File">%CSIDL_COMMON_FAVORITES%\* [*]</pattern>
   <objectSet>
</include>
<locationModify script="MigXmlHelper.RelativeMove('%CSIDL_COMMON_FAVORITES%','%CSIDL_COMMON_FAVORITES%')">
     <objectSet>
          <pattern type="File">%CSIDL_COMMON_FAVORITES%\* [*]</pattern>
     </objectSet>
</locationModify>

<_locDefinition>

この要素は、内部 USMT 要素です。 この要素は使用しないでください。

<生産者>

<manufacturer> 要素は、コンポーネントの製造元を定義しますが、移行には影響しません。

  • 出現回数: 0 または 1

  • 親要素:<component>

  • 子要素: なし

構文:

<manufacturer>Name</manufacturer>
設定 必須かどうか
名前 はい コンポーネントの製造元の名前。

<マージ>

<merge> 要素は、競合が発生した場合の動作を決定します。 競合は、移行先のコンピューターに移行されたオブジェクトが既に存在する場合です。 この要素が指定されていない場合、レジストリの既定の動作は、ソース オブジェクトがコピー先オブジェクトを上書きすることです。 ファイルの既定の動作は、ソース ファイルの名前を OriginalFileName(1).OriginalExtension に変更することです。 この要素は、競合が発生したときに実行する必要がある操作のみを指定します。 オブジェクトは含まれません。 したがって、オブジェクトを移行するには、<merge> 要素と共に>規則を<含必要があります。 オブジェクトが処理され、競合が検出されると、USMT は最も具体的なマージ 規則を選択します。 その後、競合を解決するためにルールが適用されます。 たとえば、<merge>ルール C:\* [*]<sourcePriority に設定され><merge> ルール C:\subfolder\* [*]<destinationPriority> に設定されている場合、USMT では <destinationPriority ルールがより具体的であるため>ルールが使用されます。

この要素の例については、「 競合と優先順位」を参照してください。

  • 出現回数: 無制限の

  • 親要素:<rules>

  • 必須の子要素:<objectSet>

  • ヘルパー関数: 次の <merge> 関数 は、 SourcePriorityDestinationPriorityFindFilePlaceByPatternLeafPatternNewestVersionHigherValue()LowerValue()の各要素で使用できます。

構文:

<merge script="ScriptInvocation">
</merge>
設定 必須かどうか
スクリプト はい スクリプトの後に、コンマで区切られ、かっこで囲まれた任意の数の文字列引数が続きます。 例: MyScripts.AScript ("Arg1","Arg2")

スクリプトは、 <include> ルール内のオブジェクト セットによって列挙される各オブジェクトに対して呼び出されます。 フィルター スクリプトはブール値を返します。 戻り値が TRUE の場合、オブジェクトは移行されます。 FALSE の場合、移行されません。

次の例は、 MigUser.xml ファイルの例です。

<rules>
   <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
      <objectSet>
         <pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
      </objectSet>
   </include>
   <merge script="MigXmlHelper.DestinationPriority()">
      <objectSet>
         <pattern type="File">%CSIDL_MYVIDEO% [desktop.ini]</pattern>
      </objectSet>
   </merge>
</rules>

<merge> 関数

これらの関数は、競合の解決方法を制御します。

  • DestinationPriority

    コピー先コンピューター上にあるオブジェクトを保持し、ソース コンピューターからオブジェクトを移行しないように指定します。

    次に、例を示します。

    <merge script="MigXmlHelper.DestinationPriority()">
         <objectSet>
              <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\ [MyPictures]</pattern>
              <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\Settings\ [PicturesPath]</pattern>
              <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\Settings\ [AdditionalPlugInPath]</pattern>
         </objectSet>
    </merge>
    
  • FindFilePlaceByPattern

    FindFilePlaceByPattern 関数は、競合が発生したときにインクリメント カウンターを持つファイルを保存します。 < F>、<E>、<N>のいずれかのコンストラクトを含む文字列です。

    構文: FindFilePlaceByPattern(FilePattern)

    設定 必須かどうか
    FilePattern はい
    • <F> は元のファイル名に置き換えられます。
    • <N> は、ターゲット コンピューター上のオブジェクトとの競合が発生しない限り、インクリメント カウンターに置き換えられます。
    • <E> は元のファイル名拡張子に置き換えられます。

    たとえば、 <F> (<N>).<E> は、ソース ファイル MyDocument.doc をコピー先コンピューターの MyDocument (1).doc に変更します。
  • NewestVersion

    NewestVersion 関数は、ファイルのバージョンに基づいて、対象のコンピューターでの競合を解決します。

    構文: NewestVersion(VersionTag)

    設定 必須かどうか
    VersionTag はい オンになっているバージョン フィールド。 このフィールドは、 FileVersion または ProductVersionできます。 VersionTag のバージョンが最も高いファイルは、ファイルのバージョンに基づいて解決される競合を決定します。 たとえば、 Myfile.txt に FileVersion 1 が含まれており、コピー先コンピューターの同じファイルに FileVersion 2 が含まれている場合、コピー先のファイルは残ります。
  • HigherValue()

    この関数は、レジストリ値のマージに使用できます。 レジストリ値は数値として評価され、値が大きい方がマージされるレジストリ値を決定します。

  • LowerValue()

    この関数は、レジストリ値のマージに使用できます。 レジストリ値は数値として評価され、値が小さい方がマージされるレジストリ値が決まります。

  • SourcePriority

    ソース コンピューターからオブジェクトを移行し、対象のコンピューター上にあるオブジェクトを削除するように指定します。

    次に、例を示します。

    <merge script="MigXmlHelper.SourcePriority()">
     <objectSet>
       <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\14.0\Common\Migration\Publisher [UpgradeVersion]</pattern>
       <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\15.0\Common\Migration\Publisher [UpgradeVersion]</pattern>
       <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Publisher [UpgradeVersion]</pattern>
     </objectSet>
    </merge>
    

<移動>

<migration> 要素は、移行 .xml ファイルの単一のルート要素であり、必須です。 各 .xml ファイルには、一意の移行 urlid が必要です。 コマンド ラインで指定する各ファイルの urlid は一意である必要があります。 USMT では urlid を使用してファイル内のコンポーネントを定義するため、urlid は一意である必要があります。

構文:

<migration urlid="*UrlID/*Name">
</migration>
設定 必須かどうか
urlid はい UrlID は、この .xml ファイルを一意に識別する文字列識別子です。 このパラメーターは、XML 名前空間仕様で定義されているコロンなしの名前にする必要があります。 各移行 .xml ファイルには、一意の urlid が必要です。 2 つの移行 .xml ファイルの urlid が同じ場合、コマンド ラインで指定された 2 つ目の .xml ファイルは処理されません。 XML 名前空間の詳細については、「XML 名前空間を 使用する」を参照してください。
名前 なし 必須ではありませんが、 .xml ファイルの名前を使用することをお勧めします。

次の例は、 MigApp.xml ファイルの例です。

<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/migapp">
</migration>

MigXMLHelper.FileProperties

このフィルター ヘルパー関数を使用すると、ファイル サイズと日付属性に基づいてファイルの移行をフィルター処理できます。

ヘルパー関数 MigXMLHelper.FileProperties (プロパティ、演算子、valueToCompare)
プロパティ filesize, dateCreated, dateModified, dateAccessed
演算子 range, neq, lte, lt, eq, gte, gt
valueToCompare 比較される値。 次に、例を示します。
日付: "2023/05/15-2020/05/17"、"2023/05/15"
サイズ: 末尾に B、KB、MB、または GB の数字。 "5 GB"、"1 KB-1 MB"
<component context="System"  type="Application">
<displayName>File_size</displayName>
<role role="Data">

   <rules>
        <include filter='MigXmlHelper.FileProperties("dateAccessed","range","2023/05/15-2020/05/17")'>
         <objectSet>
         <pattern type="File">%SYSTEMDRIVE%\DOCS\* [*]</pattern>
         </objectSet>
      </include>
   </rules>
</role>
</component>

<namedElements>

<namedElements> 要素を使用して、名前付き要素を定義できます。 これらの要素は、 .xml ファイル全体の任意のコンポーネントで使用できます。 この要素の使用方法の例については、 MigApp.xml ファイルを参照してください。

構文:

<namedElements>
</namedElements>

この要素の例については、 MigApp.xml ファイルを参照してください。

<object>

<object> 要素は、ファイルまたはレジストリ キーを表します。

構文:

<object>
</object>

次の例は、 MigApp.xml ファイルの例です。

<addObjects>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [UpgradeVersion]</location>
      <attributes>DWORD</attributes>
      <bytes>0B000000</bytes>
   </object>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
      <attributes>DWORD</attributes>
      <bytes>00000000</bytes>
      </object>
</addObjects>

<objectSet>

<objectSet> 要素には、オブジェクト パターンの一覧 (ファイル パス、レジストリの場所など) が含まれています。 すべての子 <条件> 要素が最初に評価されます。 すべての子 <conditions> 要素が FALSE を返す場合、 <objectSet> 要素は空のセットに評価されます。 親要素ごとに、複数の<objectSet>要素しか存在できません。

構文:

<objectSet>
</objectSet>

次の例は、 MigUser.xml ファイルの例です。

<component type="Documents" context="User">
   <displayName _locID="miguser.mymusic">My Music</displayName>
      <paths>
         <path type="File">%CSIDL_MYMUSIC%</path>
      </paths>
   <role role="Data">
      <detects>           
      <detect>
         <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYMUSIC%")</condition>
      </detect>
   </detects>           
   <rules>
      <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
         <objectSet>
            <pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
         </objectSet>
      </include>
      <merge script="MigXmlHelper.DestinationPriority()">
         <objectSet>
            <pattern type="File">%CSIDL_MYMUSIC%\ [desktop.ini]</pattern>
         </objectSet>
      </merge>
   </rules>
   </role>
</component>

<path>

この要素は、内部 USMT 要素です。 この要素は使用しないでください。

<パス>

この要素は、内部 USMT 要素です。 この要素は使用しないでください。

<パターン>

この要素を使用して、複数のオブジェクトを指定できます。 <objectSet>要素ごとに複数の<pattern>要素を使用でき、これらを組み合わせることができます。 ファイルを指定する場合は、代わりに <script> でGenerateDrivePatternsを使用することをお勧めします。 GenerateDrivePatternsは基本的に、<pattern> 規則と同じです。ドライブ文字の指定はありません。 たとえば、次の 2 行のコードは似ています。

<pattern type="File">C:\Folder\* [Sample.doc]</pattern>
<script>MigXmlHelper.GenerateDrivePatterns("\Folder\* [Sample.doc]","Fixed"</script>
  • 出現回数: 無制限の

  • 親要素:<objectSet>

  • 子要素:Path [object] 以外は有効である必要があります。

構文:

<pattern type="typeID">Path [object]</pattern>
設定 必須かどうか
はい typeID には、レジストリ、ファイル、または Ini を指定できます。 typeId が Ini の場合、Pathオブジェクトの間のスペースは許可されません。 たとえば、type="Ini"の場合、次の形式は正しいです。
<pattern type="Ini">%WinAmp5InstPath%\Winamp.ini|WinAmp[keeponscreen]</pattern>
パス [オブジェクト] 有効なレジストリまたはファイル パス パターン。その後に少なくとも 1 つのスペースが続き、その後に、移行するオブジェクトを含む角かっこ [] が続きます。
  • パス には、アスタリスク (*) ワイルドカード文字を含めることも、 Recognized 環境変数を指定することもできます。 疑問符はワイルドカード文字として使用できません。 HKCU HKLMは、それぞれHKEY_CURRENT_USERHKEY_LOCAL_MACHINEを参照するために使用できます。
  • オブジェクト にはアスタリスク (*) ワイルドカード文字を含めることができます。 ただし、疑問符はワイルドカード文字として使用できません。 次に、例を示します。
    C:\Folder\ [*] では、 C:\Folder 内のすべてのファイルが列挙されますが、 C:\Folderのサブフォルダーは列挙されません。
    C:\Folder* [*] は、 C:\Folderのすべてのファイルとサブフォルダーを列挙します。
    C:\Folder\ [*.mp3]は、C:\Folder内のすべての.mp3 ファイルを列挙します。
    C:\Folder\ [Sample.doc] は、C:\Folder にある Sample.doc ファイルのみを列挙します。

    ファイル名に角かっこ文字 ([ または ]) を含むファイルを移行する場合は、角かっこの直前ににんじん (^) 文字を挿入して有効にする必要があります。 たとえば、"file].txt" という名前のファイルがある場合は、<pattern type="File">c:\documents\mydocs [file].txt]</pattern>の代わりに<pattern type="File">c:\documents\mydocs [file^].txt]</pattern>を指定する必要があります。

次に、例を示します。

  • 1 つのレジストリ キーを移行するには:

    <pattern type="Registry">HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Cache [Persistent]</pattern>
    
  • C:\EngineeringDrafts フォルダーとサブフォルダーを C: ドライブから移行するには:

    <pattern type="File">C:\EngineeringDrafts\* [*]</pattern>
    
  • C: ドライブからサブフォルダーを除く、 C:\EngineeringDrafts フォルダーのみを移行するには:

    ファイルと設定を再ルーティングする

  • C:\EngineeringDraftsからSample.doc ファイルを移行するには:

    <pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
    
  • Sample.doc ファイルを C: ドライブに存在する場所から移行するには、次の方法で使用パターンを使用します。 C: ドライブに同じ名前の複数のファイルが存在する場合、これらのファイルはすべて移行されます。

    <pattern type="File"> C:\* [Sample.doc] </pattern>
    
  • この要素の使用方法の詳細については、「 ファイルと設定を除外する」、「 ファイルと設定を再ルーティングする」、「ファイルと設定含める」、および 「カスタム XML の例」を参照してください。

<加工>

この要素は、移行プロセス内の特定のポイントでスクリプトを実行するために使用できます。 戻り値は、指定されたスクリプトからは予期されません。 戻り値がある場合は無視されます。

構文:

<processing when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</processing>
設定 必須かどうか
いつ はい スクリプトを実行するタイミングを示します。 この値には、次のいずれかの値を指定できます。
  • スキャン前とは、スキャン プロセスが開始される前のことを意味します。
  • scan-success は、スキャン プロセスが正常に完了した後を意味します。
  • スキャン後 は、スキャンプロセスが完了した後、成功したかどうかにかかわらず意味します。
  • 適用プロセスが 開始される前に、事前適用を意味します。
  • apply-success は、適用プロセスが正常に完了した後を意味します。
  • 適用後 は、適用プロセスが完了した後、それが成功したかどうかにかかわらずを意味します。

<plugin>

この要素は、内部 USMT 要素です。 この要素は使用しないでください。

<役割>

カスタム.xml ファイルには 、<role> 要素が必要です。 <role>要素を指定すると、具象コンポーネントを作成できます。 コンポーネントは、 <component> レベルで指定されたパラメーターと、ここで指定されているロールによって定義されます。

構文:

<role role="Container|Binaries|Settings|Data">
</role>
設定 必須かどうか
役割 はい コンポーネントのロールを定義します。 ロールは、次のいずれかになります。
  • コンテナ
  • バイナリ
  • Settings
  • Data
次のいずれかの項目を指定できます。
  1. <コンポーネント内の最大 3 つの<role>要素> - 1 つの "バイナリ" ロール要素、1 つの "Settings" ロール要素、および 1 つの "Data" ロール要素。 これらのパラメーターは移行動作を変更しません。唯一の目的は、移行する設定の分類に役立ちます。 これらの <role> 要素は入れ子にすることができますが、入れ子になった各要素は同じロール パラメーターである必要があります。
  2. < component> 要素内の 1 つの "Container" <role> 要素。 この場合、子<rules>要素は指定できません。他の<コンポーネント>要素のみです。 また、各子 <コンポーネント> 要素の型は、親 <component> 要素の型と同じである必要があります。 次に、例を示します。
              
              
              <component context="UserAndSystem" type="Application">
<displayName _locID="migapp.msoffice2016">Microsoft Office 2016</displayName>
<environment name="GlobalEnv" />
<role role="Container">
<detection name="AnyOffice2016Version" />
<detection name="Word2016" />
<!--
Office 2016 の一般的な設定
-->
<component context="UserAndSystem" type="Application">

次の例は、 MigUser.xml ファイルの例です。 その他の例については、 MigApp.xml ファイルを参照してください。

<component type="System" context="User">
   <displayName _locID="miguser.startmenu">Start Menu</displayName>
   <paths>
      <path type="File">%CSIDL_STARTMENU%</path>
   </paths>
   <role role="Settings">
      <detects>           
         <detect>
            <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_STARTMENU%")</condition>
         </detect>
      </detects>           
   <rules>
      <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
         <objectSet>
            <pattern type="File">%CSIDL_STARTMENU%\* [*]</pattern>
         </objectSet>
      </include>
      <merge script="MigXmlHelper.DestinationPriority()">
         <objectSet>
            <pattern type="File">%CSIDL_STARTMENU% [desktop.ini]</pattern>
            <pattern type="File">%CSIDL_STARTMENU%\* [*]</pattern>
         </objectSet>
      </merge>
   </rules>
   </role>
</component>

<rules>

カスタム.xml ファイルには 、<rules> 要素が必要です。 この要素には、子 <conditions> 要素が存在する場合に FALSE と評価されない限り、親 <component> 要素が選択されている場合に移行中に実行される規則が含まれます。 <rules> 要素ごとに、複数の子<rules>要素を指定できます。

構文:

<rules name="ID" context="User|System|UserAndSystem">
</rules>
設定 必須かどうか
name はい。<rules の場合><namedElements の子です>
いいえ。 <rules> が他の要素の子である場合
ID を指定すると、子要素は処理されません。 代わりに、<namedElements> 内で宣言されている同じ名前の他の<rules>要素が処理されます。
context なし
(既定値 = UserAndSystem)
このパラメーターのスコープを定義します。このコンポーネントを特定のユーザーのコンテキストで処理するか、オペレーティング システム全体、またはその両方で処理するかを指定します。
可能な最大のスコープは、コンポーネント要素によって設定されます。 たとえば、<component> 要素に User のコンテキストがあり、<rules>要素に UserAndSystem のコンテキストがある場合、<rules> 要素は User のコンテキストがあるかのように動作します <rules>がシステムのコンテキストを持っている場合、それは<ルールが存在しなかったかのように動作します>。
  • ユーザー: 各ユーザーの変数を評価します。
  • システム: システムに対して 1 回だけ変数を評価します。
  • UserAndSystem: オペレーティング システム全体と各ユーザーの変数を評価します。

次の例は、 MigUser.xml ファイルの例です。

<component type="Documents" context="User">
   <displayName _locID="miguser.mymusic">My Music</displayName>
      <paths>
         <path type="File">%CSIDL_MYMUSIC%</path>
      </paths>
   <role role="Data">
      <detects>           
      <detect>
         <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYMUSIC%")</condition>
      </detect>
   </detects>           
   <rules>
      <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
         <objectSet>
            <pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
         </objectSet>
      </include>
      <merge script="MigXmlHelper.DestinationPriority()">
         <objectSet>
            <pattern type="File">%CSIDL_MYMUSIC%\ [desktop.ini]</pattern>
         </objectSet>
      </merge>
   </rules>
   </role>
</component>

<スクリプト>

<script で必要な戻り値>は親要素によって異なります。

出現回数:<variable> に対して 1 回、<objectSet><processing には無制限です>

親要素:<objectSet><variable><processing>

子要素: なし

構文とヘルパー関数:

  • 一般的な構文: <script>ScriptWithArguments</script>

  • GetStringContent、<script><variable> 内にある場合に使用できます。

    構文: <script>MigXmlHelper.GetStringContent("ObjectType","EncodedLocationPattern", "ExpandContent")</script>

    例: <script>MigXMLHelper.GetStringContent("Registry","HKLM\Software\MyApp\Installer [EXEPATH]")</script>

  • GenerateUserPatterns、<script><objectSet> 内にある場合に使用できます。

    構文: <script>MigXmlHelper.GenerateUserPatterns("ObjectType","EncodedLocationPattern","ProcessCurrentUser")</script>

    例: <script>MigXmlHelper.GenerateUserPatterns ("File","%USERPROFILE%\* [*.doc]", "FALSE")</script>

  • GenerateDrivePatterns、<script><objectSet> 内にある場合に使用できます。

    構文: <script>MigXmlHelper.GenerateDrivePatterns("PatternSegment","DriveType")</script>

    例: <script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script>

  • 単純な実行スクリプトは、<処理内にある<script>要素>要素で使用できます。AskForLogoff、ConvertToShortFileName、KillExplorer、RemoveEmptyDirectories、RestartExplorer、RegisterFonts、StartService、StopService、SyncSCM。

    構文: <script>MigXmlHelper.ExecutingScript</script>

    例: <script>MigXmlHelper.KillExplorer()</script>

設定 必須かどうか
ScriptWithArguments はい スクリプトの後に、コンマで区切られ、かっこで囲まれた任意の数の文字列引数が続きます。 例: MyScripts.AScript ("Arg1","Arg2")
スクリプトは、 <include> ルール内のオブジェクト セットによって列挙される各オブジェクトに対して呼び出されます。 フィルター スクリプトはブール値を返します。 戻り値が TRUE の場合、オブジェクトは移行されます。 FALSE の場合、移行されません。
<script で必要な戻り値>は親要素によって異なります。
  • <variable> 内で使用する場合、戻り値は文字列である必要があります。
  • <objectSet>内で使用する場合、戻り値は文字列の 2 次元配列である必要があります。
  • <location>内で使用する場合、戻り値は、<location> の type 属性と一致する有効な場所である必要があります。 たとえば、 <location type="File">場合、子スクリプト要素が指定されている場合は、有効なファイルの場所である必要があります。

    ファイル名に角かっこ ([ または ]) を含むファイルを移行する場合は、角かっこの直前ににんじん (^) 文字を挿入して有効にします。 たとえば、"file].txt" という名前のファイルがある場合は、<pattern type="File">c:\documents\mydocs [file].txt]</pattern>の代わりに <pattern type="File">c:\documents\mydocs [file^].txt]</pattern> を指定します。

例:

ソース コンピューター上の任意のドライブから Sample.doc ファイルを移行するには、次のように <script> を使用します。 同じ名前の複数のファイルが存在する場合、そのようなファイルはすべて移行されます。

<script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script> 

この要素の使用方法の詳細については、「 ファイルと設定の除外」、「ファイルと設定再ルーティング」、および 「カスタム XML の例」を参照してください。

<script> 関数

<script> 要素では、次の関数を使用できます。

文字列とパターン生成関数

これらの関数は、文字列またはパターンを返します。

  • GetStringContent

    GetStringContent は、<variable> 要素内にある <script> 要素と共に使用できます。 可能であれば、この関数は指定されたオブジェクトの文字列表現を返します。 それ以外の場合は 、NULL を返します。 ファイル オブジェクトの場合、この関数は常に NULL を返します。

    構文: GetStringContent("ObjectType","EncodedLocationPattern", "ExpandContent")

    設定 必須かどうか
    ObjectType はい オブジェクトの型。 レジストリまたは Ini ( .ini ファイルの場合) を指定できます。
    EncodedLocationPattern はい
    • オブジェクトの種類が Registry の場合、EncodedLocationPattern は有効なレジストリ パスである必要があります。 例: HKLM\SOFTWARE\MyKey[]
    • オブジェクトの型が Ini の場合、EncodedLocationPattern は次の形式である必要があります。
      IniFilePath|SectionName[SettingName]
    ExpandContent いいえ (default=TRUE) TRUE または FALSE を指定できます。 FALSE の場合、指定された場所は、返される前に展開されません。

    次に、例を示します。

    <variable name="MSNMessengerInstPath">
    <script>MigXmlHelper.GetStringContent("Registry","%HklmWowSoftware%\Microsoft\MSNMessenger [InstallationDirectory]")</script>
    </variable>
    
  • GenerateDrivePatterns

    GenerateDrivePatterns関数は、使用可能なすべてのドライブを反復処理し、要求されたドライブの種類に一致するものを選択します。 次に、選択したドライブを PatternSegment の末尾に連結して、完全にエンコードされたファイル パターンを形成します。 たとえば、 PatternSegmentPath [file.txt] され、 DriveTypeFixedされている場合、C: 以外の固定ドライブがある場合、関数は C:\Path [file.txt]およびその他のパターンを生成します。 この関数では環境変数を指定できません。 GenerateDrivePatterns < objectSet 内にある<script>要素><include>/<exclude> 内にある要素と共に使用できます。

    構文: GenerateDrivePatterns("PatternSegment","DriveType")

    設定 必須かどうか
    PatternSegment はい エンコードされたパターンのサフィックス。 値は、完全な エンコードされたファイル パターンを形成するために、"c:" などのドライブ仕様と連結されます。 たとえば、"* [*.doc]" です。 PatternSegment を環境変数にすることはできません。
    DriveType パターンを生成するドライブの種類。 次のいずれかの項目を指定できます。
    • 固定
    • CDROM
    • リムーバブル
    • リモート アクセスとサーバー管理

    この要素の例については、 MigUser.xml ファイルの最後のコンポーネントを参照してください。

  • GenerateUserPatterns

    GenerateUserPatterns関数は、移行されているすべてのユーザーを反復処理します。現在処理されているユーザーを除く<ProcessCurrentUser>FALSE の場合、各ユーザーのコンテキストで指定したパターンを展開します。 たとえば、ユーザー A、B、C が C:\Usersにプロファイルを持っている場合、 GenerateUserPattens('File','%userprofile% [*.doc]','TRUE')を呼び出すことによって、ヘルパー関数は次の 3 つのパターンを生成します。

    • "C:\Users\A\* [*.doc]"

    • "C:\Users\B\* [*.doc]"

    • "C:\Users\C\* [*.doc]"

    構文: GenerateUserPatterns("ObjectType","EncodedLocationPattern","ProcessCurrentUser")

    設定 必須かどうか
    ObjectType はい オブジェクトの種類を定義します。 ファイルまたはレジストリを指定できます。
    EncodedLocationPattern はい 場所パターン。 環境変数は許可されます。
    ProcessCurrentUser はい TRUE または FALSE を指定できます。 現在のユーザーに対してパターンを生成する必要があるかどうかを示します。

例:

USMT がユーザー A の処理中に GenerateUserPattens('File','%userprofile% [*.doc]','FALSE') が呼び出された場合、この関数はユーザー B と C のパターンのみを生成します。このヘルパー関数を使用して、複雑なルールを作成できます。 たとえば、ソース コンピューターからすべての .doc ファイルを移行しますが、ユーザー X が移行されていない場合は、ユーザー X のプロファイルから .doc ファイルを移行しないでください。

次の例は、このシナリオのコード例です。 最初の <rules> 要素は、C:\Users内のファイルを除く、ソース コンピューター上のすべての.doc ファイルを移行します。 2 つ目の <rules> 要素は、他のユーザーのプロファイル内の.doc ファイルを除き、すべての.doc ファイルをC:\Usersから移行します。 2 つ目の <rules> 要素は、移行された各ユーザー コンテキストで処理されるため、最終的な結果が目的の動作になります。 最終的な結果は、予期した結果です。

<rules context="System">
  <include>
    <objectSet>
      <script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc]", "Fixed")</script>
    </objectSet>
  </include>
  <exclude>
    <objectSet>
      <pattern type="File">%ProfilesFolder%\* [*.doc]</pattern>
    </objectSet>
  </exclude>
</rules>
<rules context="User">
  <include>
    <objectSet>
      <pattern type="File">%ProfilesFolder%\* [*.doc]</pattern>
    </objectSet>
  </include>
  <exclude>
    <objectSet>
      <script>MigXmlHelper.GenerateUserPatterns ("File","%userprofile%\* [*.doc]", "FALSE")</script>
    </objectSet>
  </exclude>
</rules>

MigXmlHelper.GenerateDocPatterns

MigXmlHelper.GenerateDocPatterns ヘルパー関数は、ドキュメント ファインダーを呼び出して、移行できるすべてのファイルについてシステムをスキャンします。 スキャンに集中するために 、システム コンテキストまたは ユーザー コンテキストで呼び出すことができます。

設定 必須かどうか
ScanProgramFiles いいえ (既定値 = FALSE) TRUE または FALSE を指定できます。 ScanProgramFiles パラメーターは、ドキュメント ファインダーが Program Files ディレクトリをスキャンして、既知のアプリケーションの登録済みファイル拡張子を収集するかどうかを決定します。 たとえば、TRUE に設定すると、.jpgが Photoshop に登録されているファイル拡張子である場合、Photoshop ディレクトリの下.jpgファイルが検出され、移行されます。
IncludePatterns いいえ (既定値 = TRUE) TRUE または FALSE を指定できます。 TRUE は インクルード パターンを生成し、 <include> 要素の下に追加できます。 FALSE は 除外パターンを生成し、 <exclude> 要素の下に追加できます。
SystemDrive いいえ (既定値 = FALSE) TRUE または FALSE を指定できます。 TRUE の場合、すべてのパターンをシステム ドライブに制限します。
 <!-- This component migrates data in user context -->
  <component type="Documents" context="User">
    <displayName>MigDocUser</displayName>
    <role role="Data">
      <rules>
        <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
          <objectSet>
            <script>MigXmlHelper.GenerateDocPatterns ("false")</script>
          </objectSet>
        </include>
        <exclude>
          <objectSet>
           <script>MigXmlHelper.GenerateDocPatterns ("false", "false", "false")</script>
          </objectSet>
        </exclude>
      </rules>
    </role>
  </component>

単純な実行スクリプト

次のスクリプトには戻り値がありません。 次のエラーは、<処理内にある<script>要素>要素で使用できます

  • AskForLogoff(). 移行の終了時にサインアウトするユーザーをプロンプトします。 次に、例を示します。

    <processing when="apply-success">
      <script>MigXmlHelper.AskForLogoff()</script>
    </processing>
    
  • ConvertToShortFileName(RegistryEncodedLocation). RegistryEncodedLocation が既存のファイルの完全なパスである場合、この関数はファイルを短いファイル名に変換し、レジストリ値を更新します。

  • KillExplorer(). 現在のユーザー コンテキストの Explorer.exe を停止します。 Explorer.exe を停止すると、Explorer.exe 実行中に開いたままになっている特定のキーとファイルにアクセスできます。 次に、例を示します。

    <processing when="pre-apply">
      <script>MigXmlHelper.KillExplorer()</script>
    </processing>
    
  • RegisterFonts(FileEncodedLocation). 指定したディレクトリ内の指定されたフォントまたはすべてのフォントを登録します。 次に、例を示します。

 <processing when="apply-success">
   <script>MigXmlHelper.RegisterFonts("%CSIDL_COMMON_FONTS%")</script>
 </processing>
  • RemoveEmptyDirectories (DirectoryEncodedPattern)。 コピー先コンピューターの DirectoryEncodedPattern と一致する空のディレクトリを削除します。

  • RestartExplorer()。 移行の終了時に Explorer.exe を再起動します。 次に、例を示します。

    <processing when="post-apply">
      <script>MigXmlHelper.RestartExplorer()</script>
    </processing>
    
  • StartService (ServiceName、OptionalParam1、OptionalParam2,...)。 ServiceName によって識別されるサービスを開始 します。ServiceName は、指定されたサービスのデータを保持する HKLM\System\CurrentControlSet\Services のサブキーです。 省略可能なパラメーターがある場合は、StartService API に渡されます。 詳細については、 StartServiceA 関数 (winsvc.h) に関する 記事を参照してください。

  • StopService (ServiceName)。 ServiceName によって識別されるサービスを停止 します。ServiceName は、指定されたサービスのデータを保持する HKLM\System\CurrentControlSet\Services のサブキーです。

  • SyncSCM(ServiceShortName)。 移行エンジンによって値が変更された後 (HKLM\System\CurrentControlSet\Services\ServiceShortName [Start]) レジストリから Start 型の値を読み取り、Service Control Manager (SCM) を新しい値と同期します。

<テキスト>

<text> 要素を使用して、移行 .xml ファイル内にある環境変数の値を設定できます。

構文:

<text>NormalText</text>
設定
NormalText このテキストは通常のテキストとして解釈されます。

次に、例を示します。

<variable name="QuickTime5or6DataSys">
  <text>%CSIDL_COMMON_APPDATA%\QuickTime</text> 
</variable>

<無条件Exclude>

<unconditionalExclude> 要素は、移行.xmlファイルまたはConfig.xml ファイル内の他のインクルード 規則に関係なく、指定されたファイルとレジストリ値を移行から除外します。 この要素は他のすべての規則よりも優先されるため、ここで宣言されたオブジェクトは移行されません。 たとえば、明示的な<が含まれている場合でも>.mp3ファイルを含めるルールは、このオプションで除外されている場合、移行されません。

ソース コンピューターからすべての .mp3 ファイルを除外するには、この要素を使用します。 または、別の方法を使用して C:\UserData バックアップする場合は、フォルダー全体を移行から除外できます。 この要素は注意して使用してください。 除外されたファイルがアプリケーションに必要な場合、アプリケーションが対象のコンピューターで正しく機能しない可能性があります。

構文:

<unconditionalExclude></unconditionalExclude>

次の .xml ファイルは、すべての .mp3 ファイルを移行から除外します。 この要素の使用方法のその他の例については、「 ファイルと設定を除外する」を参照してください。

<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/excludefiles">
  <component context="System" type="Documents">
        <displayName>Test</displayName>
        <role role="Data">
            <rules>
             <unconditionalExclude>
                        <objectSet>
    <script>MigXmlHelper.GenerateDrivePatterns ("* [*.mp3]", "Fixed")</script>
                        </objectSet> 
             </unconditionalExclude>
            </rules>
        </role>
    </component>
</migration>

<変数>

< environment> 要素には、<variable> 要素が必要です。 各 <variable> 要素には、1 つの<objectSet>、<script>、または <text> 要素が必要です。 <variable> 要素の内容は、環境変数にテキスト値を割り当てます。 この要素には、次の 3 つのオプションがあります。

  1. <variable> 要素に <text> 要素が含まれている場合、変数要素の値は <text> 要素の値です。

  2. <variable> 要素に <script> 要素が含まれており、スクリプトの呼び出しで null 以外の文字列が生成される場合、<variable の値>要素はスクリプト呼び出しの結果です。

  3. <variable> 要素に <objectSet が含まれており><objectSet> 要素の評価によって少なくとも 1 つのオブジェクト パターンが生成される場合、結果のオブジェクト パターンに一致する最初のオブジェクトの値は変数要素の値になります。

構文:

<variable name="ID" remap=TRUE|FALSE>
</variable>
設定 必須かどうか
name ID は、環境変数を参照するために使用される名前である文字列値です。 名前空間の競合を回避するために、 ID はコンポーネントの名前で始まるようお勧めします。 たとえば、コンポーネントの名前が MyComponent で、コンポーネントのインストール パスである変数が必要な場合は、 MyComponent.InstallPathcould を指定します。
リマップ いいえ、既定値 = FALSE この環境変数を再マッピング環境変数として評価するかどうかを指定します。 この環境変数の値の下にあるパスにあるオブジェクトは、環境変数がコピー先コンピューターを指す場所に自動的に移動されます。

次の例は、 MigApp.xml ファイルの例です。

<environment>
   <variable name="HklmWowSoftware">
      <text>HKLM\Software</text>
   </variable>
   <variable name="WinZip8or9or10Exe">
      <script>MigXmlHelper.GetStringContent("Registry","%HklmWowSoftware%\Microsoft\Windows\CurrentVersion\App Paths\winzip32.exe []")</script>
   </variable>
</environment>

<version>

<version> 要素はコンポーネントのバージョンを定義しますが、移行には影響しません。

  • 出現回数: 0 または 1

  • 親要素:<component>

  • 子要素: なし

構文:

<version>ComponentVersion</version>
設定 必須かどうか
ComponentVersion はい パターンを含めることができるコンポーネントのバージョン。

次に、例を示します。

<version>4.*</version>

<windowsObjects>

<windowsObjects> 要素は、USMT 内部でのみ使用されます。 この要素は使用しないでください。

付録

場所の指定

  • エンコードされた場所の指定。 すべてのヘルパー関数で使用されるエンコードされた場所は、オブジェクトの名前の明確な文字列表現です。 エンコードされた場所は、ノード パーツで構成され、必要に応じて、角かっこで囲まれたリーフが続きます。 この形式では、ノードと葉が明確に区別されます。

    たとえば、次のようにファイル C:\Windows\Notepad.exe を指定します: c:\Windows[Notepad.exe]。 同様に、ディレクトリ C:\Windows\System32 を次のように指定します: c:\Windows\System32。 ( [] コンストラクトがないことに注意してください)。

    レジストリの表現も同様です。 レジストリ キーの既定値は、空の [] コンストラクトとして表されます。 たとえば、 HKLM\SOFTWARE\MyKey レジストリ キーの既定値は HKLM\SOFTWARE\MyKey[]です。

  • 場所パターンの指定。 場所パターンの指定は、実際の場所の指定と似ています。 例外は、ノードとリーフ パーツの両方がパターンを受け入れることです。 ただし、ノードからのパターンはリーフに拡張されません。

    たとえば、パターン c:\Windows\* は Windows ディレクトリとすべてのサブディレクトリと一致しますが、これらのディレクトリ内のファイルと一致しません。 ファイルと一致させるには、 c:\Windows\*[*] を指定する必要があります。

内部 USMT 関数

次の関数は、USMT の内部でのみ使用されます。 .xml ファイルでは使用しないでください。

  • AntiAlias

  • ConvertScreenSaver

  • ConvertShowIEOnDesktop

  • ConvertToOfficeLangID

  • MigrateActiveDesktop

  • MigrateAppearanceUPM

  • MigrateDisplayCS

  • MigrateDisplaySS

  • MigrateIEAutoSearch

  • MigrateMouseUPM

  • MigrateSoundSysTray

  • MigrateTaskBarss

  • SetPstPathInMapiStruc

有効なバージョン タグ

次のバージョン タグは、さまざまなヘルパー関数で使用できます。

  • "CompanyName"

  • "FileDescription"

  • "FileVersion"

  • "InternalName"

  • "LegalCopyright"

  • "OriginalFilename"

  • "ProductName"

  • "ProductVersion"

次のバージョン タグには、比較できる値が含まれています。

  • "FileVersion"

  • "ProductVersion"