XML 要素ライブラリ

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

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

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

要素とヘルパー関数

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

要素 A から K 要素 L から Z ヘルパー関数
<addObjects>
<属性>
<バイト>
<コマンドライン>
<コンポーネント>
<条件>
<条件>
<コンテンツ>
<contentModify>
<説明>
<destinationCleanup>
<検出>
<検出>
<検出>
<Displayname>
<環境>
<exclude>
<excludeAttributes>
<拡張 機能>
<拡張子>
<externalProcess>
<アイコン>
<含める>
<includeAttribute>
<ライブラリ>
<場所>
<locationModify>
<_locDefinition>
<メーカー>
<マージ>
<移行>
<namedElements>
<object>
<objectSet>
<パス>
<パス>
<パターン>
<処理>
<プラグイン>
<役割>
<ルール>
<スクリプト>
<テキスト>
<無条件Exclude>
<変数>
<バージョン>
<windowsObjects>
<condition> 関数
<content> 関数
<contentModify> 関数
<フィルター関数を含める> / <除外> する
<locationModify> 関数
<merge> 関数
<スクリプト> 関数
内部 USMT 関数

<addObjects>

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

構文:

<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> 要素は<ファイルに対してのみ指定できます。場所>がレジストリ キーまたはディレクトリに対応する場合<<バイト>は無視されるためです。

  • 出現回数: 0 または 1

  • 親要素:<object>

  • 子要素: なし

構文:

<bytes string="Yes|No" expand="Yes|No">Content</bytes>
設定 必須かどうか
文字列 いいえ、既定値は No です Content を文字列として解釈するか、バイトとして解釈するかを決定します。
expand いいえ (既定値 = はい) expand パラメーターが Yes の場合、bytes> 要素の<内容は最初にソース コンピューターのコンテキストで展開され、次に解釈されます。
コンテンツ はい 文字列の値によって異なります。
  • 文字列が [はい] の場合: bytes> 要素の<内容は文字列として解釈されます。
  • 文字列が No の場合: bytes> 要素の<内容はバイトとして解釈されます。 2 文字ごとに、バイトの 16 進値が表されます。 たとえば、 616263 は ANSI 文字列の abc 表現です。 文字列終端記号を含む 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> 要素は<ScanState ツールと LoadState ツールの実行前または実行後に、サービスまたはアプリケーションを開始または停止するために使用できます。

構文:

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

<コンポーネント>

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

コンポーネントは、別のコンポーネント内に入れ子にすることができます。つまり、コンポーネント要素は<、次><2 つのケースで、コンポーネント要素内の role> 要素の子にすることができます。<>

  1. <コンポーネント> 要素がコンテナーの場合
  2. 子コンポーネント要素が親<コンポーネント>要素と同じロールを持つ場合。><

構文:

<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
このパラメーターのスコープを定義します。つまり、特定のユーザーのコンテキスト、オペレーティング システム全体、またはその両方でこのコンポーネントを処理するかどうかです。
可能な最大のスコープは、コンポーネント>要素によって設定されます<。 たとえば、コンポーネント>要素に<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 を返す場合、親要素は評価されません。

  • 出現回数: 無制限。

  • 親要素:<条件><検出><objectSet><addObjects>

  • 子要素: なし

  • ヘルパー関数:この要素IsNative64Bit()DoesObjectExistIsOSEarlierThanDoesFileVersionMatchIsSystemContextIsSameContentIsSameObjectIsFileVersionAboveIsOSLaterThanDoesStringContentContainDoesStringContentEqualDoesOSMatchIsFileVersionBelowでは、および の条件>関数を使用できます。<IsSameStringContent

構文:

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

たとえば、次のコード サンプルでは、<条件要素 A と B は、別々の条件>>セクションにあるため、AND 演算子によって結合<されます。

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

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

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

<condition> 関数

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

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

  • DoesOSMatch

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

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

    設定 必須かどうか
    OSType この設定の有効な値は NT のみです。 ただし、条件関数が正しく動作するためには、<この設定を設定する必要があります。>
    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

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

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

構文:

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

<content> 関数

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

  • ExtractSingleFile

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

    構文: ExtractSingleFile(Separators,PathHints)

    設定 必須かどうか
    区切り 記号 はい このレジストリ値名のファイル仕様に従う可能性のある区切り記号の一覧。 たとえば、コンテンツが "C:\Windows\Notepad.exe,-2" の場合、区切り記号はコンマです。 NULL を 指定できます。
    PathHints はい コロン (;) で区切られた追加のパスの一覧。ここで、関数は現在のコンテンツに一致するファイルを検索します。 たとえば、コンテンツが "Notepad.exe" で、パスが %Path% 環境変数である場合、関数は Notepad.exe%windir% を検索し 、"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% 環境変数である場合、関数は Notepad.exe%windir% を検索し 、"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 コンテンツを、コピー先コンピューターに既に存在する同等のレジストリ値の内容とマージします。 Instruction をクリックし、 String 結果の 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> 要素を使用<するすべてのスクリプトの書き換えが必要になります。 代わりに、検出要素を<>使用することをお勧めします。 検出>要素を<使用すると、より明確に定式化された複雑なブール型ステートメントを使用できます。

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

detect> 要素ごとに<複数の子<条件>または <objectSet> 要素を指定できます。これは OR 演算子によって論理的に結合されます。 少なくとも 1 つの <条件> または <objectSet> 要素が TRUE と評価された場合、 <detect> 要素は TRUE と評価されます。

構文:

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

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

<検出>

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

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

構文:

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

context パラメーターは、ルール>要素内<にある要素を>検出する場合は無視されます<

次の例は、 ファイルの例です 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>

<検出>

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

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

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

構文:

<detection name="ID" context="User|System|UserAndSystem">
</detection>
設定 必須かどうか
name
  • はい(namedElements で<検出が宣言されている場合)><>
  • 省略可能(ロールの下で <宣言されている場合)>
宣言された場合、検出>要素の<内容は無視され、namedElements> 要素で宣言されたのと同じ名前の<検出>要素の内容<が評価されます。
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> 要素は、各<コンポーネント>要素内の必須フィールドです。

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

  • 親要素:<component>

  • 子要素: なし

構文:

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

次に、例を示します。

<displayName>Command Prompt settings</displayName>

<環境>

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

構文:

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

シナリオ 1 の例

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

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

次に、include ルールを次のように使用できます。 任意のスクリプト>関数を<使用して、同様のタスクを実行できます。

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

  • 出現回数: 無制限

  • 親要素:<rules>

  • 子要素:<objectSet>

  • ヘルパー関数:<の除外>フィルター関数は、、、NeverRestoreIgnoreIrrelevantLinksAnswerNoおよび の要素CompareStringContentと共にSameRegContent使用できます。

構文:

<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 つ以上<の拡張>要素のコンテナーです。

構文:

<extensions>
</extensions>

<拡張子>

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

  • 出現回数: 無制限

  • 親要素:<extensions>

  • 子要素: なし

構文:

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

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

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

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

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

拡張要素の使用方法<の別の例については、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> 要素は<、より具体的な<除外>規則がない限り、移行する対象を決定します。 収集する必要がある内容の定義を拡張するために、スクリプトをより具体的に指定できます。 include> 要素ごとに<、複数<の objectSet> 要素を指定できます。

構文:

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

<フィルター関数を含める> / <除外> する

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

  • AnswerNo

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

    構文: AnswerNo ()

  • CompareStringContent

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

    設定 必須かどうか
    StringContent はい チェックする文字列。
    CompareType 文字列。 次のいずれかの値を使用します。
    • 等しい (大文字と小文字は区別されません)。 移行エンジンによって処理される現在のオブジェクトの文字列表現が と同じ場合、関数は TRUE をStringContent返します。
    • 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> 要素は<、オブジェクト要素の場所を<定義します>

  • 出現回数:オブジェクト>ごとに< 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>
設定 必須かどうか
名前 はい コンポーネントの製造元の名前。

<マージ>

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

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

構文:

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

スクリプトは、インクルード> 規則のオブジェクト セットによって列挙される各オブジェクトに対して<呼び出されます。 フィルター スクリプトはブール値を返します。 戻り値が 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.docMyDocument (1).docをコピー先のコンピューターに変更します。
  • NewestVersion

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

    構文: NewestVersion(VersionTag)

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

ファイルの例を次に 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> 要素には、ファイル パス、レジストリの場所など、オブジェクト パターンの一覧が含まれています。 すべての子 <条件> 要素が最初に評価されます。 すべての子 <条件> 要素が 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> 要素ごとに<複数<のパターン>要素を使用でき、組み合わせることができます。 ファイルを指定する場合は、代わりにスクリプト>で< を使用GenerateDrivePatternsすることをお勧めします。 GenerateDrivePatternsは基本的にパターン>ルールと<同じですが、ドライブ文字の指定はありません。 たとえば、次の 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 つのスペースが続き、その後に、移行するオブジェクトを含む角かっこ [] が続きます。
  • パス にはアスタリスク (*) ワイルドカード文字を含めることも、 認識された環境変数を指定することもできます。 疑問符はワイルドカード文字として使用できません。 HKCUHKLM をそれぞれ参照HKEY_CURRENT_USERHKEY_LOCAL_MACHINEするために使用できます。
  • オブジェクト にはアスタリスク (*) ワイルドカード文字を含めることができます。 ただし、疑問符はワイルドカード文字として使用できません。 次に、例を示します。
    C:\Folder\ [*] 内のすべてのファイル C:\Folder を列挙しますが、 の C:\Folderサブフォルダーは列挙しません。
    C:\Folder* [*] のすべてのファイルと サブフォルダーを列挙します C:\Folder
    C:\Folder\ [*.mp3] 内のすべての .mp3 ファイル C:\Folderを列挙します。
    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:\EngineeringDrafts 除くフォルダーのみを C: ドライブから移行するには:

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

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

    <pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
    
  • C: ドライブに Sample.doc 存在する場所からファイルを移行するには、次の方法で使用パターンを使用します。 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 は、適用プロセスが正常に完了した後を意味します。
  • 適用後 は、適用プロセスが完了した後、それが成功したかどうかにかかわらずを意味します。

<プラグイン>

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

<役割>

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

構文:

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

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

構文:

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

<スクリプト>

スクリプト>で<必要な戻り値は、親要素によって異なります。

出現回数:変数>の場合<は 1 回、objectSet> と処理には無制限<><

親要素:<objectSet><変数><処理>

子要素: なし

構文とヘルパー関数:

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

  • GetStringContent は、スクリプト>が変数内にある場合<に使用できます。<>

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

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

  • GenerateUserPatterns は、スクリプト>が objectSet 内にある場合<<使用できます。>

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

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

  • GenerateDrivePatterns は、スクリプト>が objectSet 内にある場合<<使用できます。>

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

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

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

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

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

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

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

<スクリプト> 関数

スクリプト要素では、次の関数を<使用できます。>

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

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

  • GetStringContent

    GetStringContent は、変数>要素内<にあるスクリプト>要素と共<に使用できます。 可能であれば、この関数は指定されたオブジェクトの文字列表現を返します。 それ以外の場合は 、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 の末尾に連結して、完全にエンコードされたファイル パターンを形成します。 たとえば、PatternSegment が で DriveTypePath [file.txt] の場合、FixedC: 以外の固定ドライブがある場合は、関数によって 、およびその他のパターンが生成C:\Path [file.txt]されます。 この関数では環境変数を指定できません。 GenerateDrivePatternsは、include /<exclude> 内にある objectSet> 内<スクリプト>要素と共<<使用できます。>

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

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

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

  • GenerateUserPatterns

    GenerateUserPatternsProcessCurrentUser> が FALSE の場合<、現在処理されているユーザーを除き、移行されているすべてのユーザーを反復処理し、各ユーザーのコンテキストで指定したパターンを展開します。 たとえば、ユーザー A、B、C が を呼び出GenerateUserPattens('File','%userprofile% [*.doc]','TRUE')して にC:\Usersプロファイルを持っている場合、ヘルパー関数は次の 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 番目<のルール>要素は、他のユーザーのプロファイル内のファイルを.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 に設定すると、Photoshop ディレクトリの下 .jpg ファイルが検出され、移行されます (ファイル拡張子が 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>

単純な実行スクリプト

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

  • 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 ファイルの 1 つ内にある任意の環境変数の値を設定できます。

  • 出現回数:<変数> 要素に 1 回。

  • 親要素:<変数>

  • 子要素: なし。

構文:

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

次に、例を示します。

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

<無条件Exclude>

無条件Exclude>要素は<、移行.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>

<変数>

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

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

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

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

構文:

<variable name="ID" remap=TRUE|FALSE>
</variable>
設定 必須かどうか
name はい ID は、環境変数を参照するために使用される名前である文字列値です。 名前空間の競合を回避するために、 ID はコンポーネントの名前で始まるようお勧めします。 たとえば、コンポーネントの名前が MyComponent で、コンポーネントのインストール パスである変数が必要な場合は、 MyComponent.InstallPath指定できます。
リマップ いいえ、既定値 = 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 ファイルでは使用しないでください。

  • アンチ エイリアス

  • ConvertScreenSaver

  • ConvertShowIEOnDesktop

  • ConvertToOfficeLangID

  • MigrateActiveDesktop

  • MigrateAppearanceUPM

  • MigrateDisplayCS

  • MigrateDisplaySS

  • MigrateIEAutoSearch

  • MigrateMouseUPM

  • MigrateSoundSysTray

  • MigrateTaskBarss

  • SetPstPathInMapiStruc

有効なバージョン タグ

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

  • "CompanyName"

  • "FileDescription"

  • "FileVersion"

  • "InternalName"

  • "LegalCopyright"

  • "OriginalFilename"

  • "ProductName"

  • "ProductVersion"

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

  • "FileVersion"

  • "ProductVersion"