了解 ADMX 原則

由於提高簡單性,且可將裝置設為目標的便利性增加,企業企業發現將其計算機管理移至雲端式裝置管理解決方案越來越有利。 可惜的是,新式 Windows 電腦裝置管理解決方案缺少傳統電腦管理解決方案中支援的重要原則和應用程式設定設定功能。

行動 裝置管理 (MDM) 原則設定支援已擴充,以允許透過原則設定服務提供者 (CSP) 存取選取的一組 群組原則 系統管理範本 (適用於 Windows 計算機的 ADMX 原則) 。 此擴充的存取權可確保企業能夠保持其裝置的合規性,並防止風險危害透過雲端管理的裝置安全性。

背景

除了標準 MDM 原則之外,原則 CSP 也可以處理選取的一組 ADMX 原則。 在ADMX原則中,系統管理範本包含 Windows 群組原則 的元數據,而且可以在電腦的本機 群組原則 編輯器 中編輯。 每個系統管理範本都會指定與 群組原則 相關聯的登錄機碼 (及其值) ,並定義可管理的原則設定。 系統管理範本會在階層中組織組策略,其中階層路徑中的每個區段都會定義為類別。 群組原則 系統管理範本中的每個設定都會對應至特定登錄值。 這些 群組原則 設定是以標準型 XML 檔格式定義,稱為 ADMX 檔案。 如需詳細資訊,請參閱 #D21BEEA5C6C7B4AA59FD03913730D0EA6 ADMX 語法參考指南。

ADMX 檔案可以描述隨附於 Windows 的作業系統 (操作系統) 組策略,或描述應用程式的設定,這些設定與操作系統不同,通常可下載並安裝在計算機上。 根據它們控制 (OS 或應用程式) 的特定設定類別,系統管理範本設定可在本機 群組原則 編輯器 中的下列兩個位置找到:

  • 操作系統設定:計算機設定/系統管理範本
  • 應用程式設定:用戶設定/系統管理範本

在域控制器/群組原則 生態系統中,每當用戶端電腦處理 群組原則 時,系統管理範本用戶端延伸模組會自動將組策略新增至用戶端電腦或使用者配置檔的登錄 (CSE) 。 相反地,在 MDM 管理的用戶端中,會套用 ADMX 檔案來定義與組策略無關的原則。 因此,在 MDM 管理的用戶端中,不需要 群組原則 基礎結構,包括 群組原則 服務 (gpsvc.exe) 。

ADMX 檔案可以隨附位於 %SystemRoot%\policydefinitions) 的 Windows (,也可以透過原則 CSP URI () ./Vendor/MSFT/Policy/ConfigOperations/ADMXInstall 內嵌到裝置。 收件匣 ADMX 檔案會在OS建置階段處理到 MDM 原則中。 透過原則 CSP,系統會將內嵌的 ADMX 檔案處理到操作系統後出貨的 MDM 原則中。 因為原則 CSP 不依賴 群組原則 用戶端堆疊的任何層面,包括計算機的 群組原則 服務 (GPSvc) ,所以擷取到裝置的原則處理程式能夠回應 MDM 所設定的原則。

Windows 會剖析相關聯的 ADMX 檔案、尋找指定的 群組原則,並將定義 (元數據) 儲存在 MDM 原則 CSP 用戶端存放區中,將 群組原則 的名稱和類別路徑對應至 MDM 原則區域和原則名稱。 當 MDM 原則包含 SyncML 命令和原則 CSP URI 時, .\[device|user]\vendor\msft\policy\[config|result]\<area>\<policy>會參考此元數據,並判斷要設定或移除哪些登錄機碼。 如需 MDM 支援的 ADMX 原則清單,請參閱 原則 CSP - ADMX 原則

ADMX 檔案和 群組原則 編輯器

若要擷取 ADMX 組策略的端對端 MDM 處理,IT 系統管理員必須使用 群組原則 編輯器 (gpedit.msc) 等 UI 來收集必要的數據。 MDM ISV 控制台 UI 會決定如何從 IT 系統管理員收集所需的 群組原則 資料。 ADMX 組策略會組織在階層中,而且可以有計算機、使用者或兩者的範圍。 下一節中的 群組原則 範例會使用名為“Publishing Server 2 Settings” 的全計算機 群組原則。選取此 群組原則 時,其可用狀態為 [未設定]、[已啟用] 和 [已停用]

MDM ISV 用來判斷要向 IT 系統管理員顯示哪些 UI 的 ADMX 檔案,與用戶端用於原則定義的 ADMX 檔案相同。 ADMX 檔案會在建置階段由 OS 處理,或由用戶端在 OS 執行時間設定。 在任一情況下,用戶端和 MDM ISV 都必須與 ADMX 原則定義同步。 每個 ADMX 檔案都會對應至 群組原則 類別,而且通常包含數個原則定義,每個定義都代表單一 群組原則。 例如,“Publishing Server 2 Settings” 的原則定義包含在 appv.admx 檔案中,其中包含 Microsoft Application Virtualization (App-V) 群組原則 類別的原則定義。

群組原則 選項按鈕設定:

  • 如果選取 [已啟用 ],則使用者在UI中會顯示必要的數據輸入控件。 當 IT 系統管理員輸入資料並選取 [ 套用] 時,會發生下列事件:

    • MDM ISV 伺服器會使用包含使用者輸入數據的承載來設定 Replace SyncML 命令。
    • MDM 用戶端堆疊會接收此數據,這會導致原則 CSP 根據 ADMX 原則定義更新裝置的登錄。
  • 如果已選取 [停 用],而且您選取 [ 套用],則會發生下列事件:

    • MDM ISV 伺服器會設定 Replace SyncML 命令,並將承載設定為 <disabled\>
    • MDM 用戶端堆疊會收到此命令,這會導致原則 CSP 根據 ADMX 原則定義所導向的狀態變更,刪除裝置的登錄設定、設定登錄機碼或兩者。
  • 如果選取 [ 未設定] ,而且您選取 [ 用],則會發生下列事件:

    • MDM ISV 伺服器會設定 Delete SyncML 命令。
    • MDM 用戶端堆疊會收到此命令,這會導致原則 CSP 根據 ADMX 原則定義刪除裝置的登錄設定。

下圖顯示 群組原則 編輯器 的主要顯示。

群組原則 編輯器。

下圖顯示 群組原則 編輯器 中[發佈伺服器 2 設定] 群組原則 的設定。

群組原則 發行者伺服器 2 設定。

大部分的組策略都是簡單的布爾值類型。 針對布爾值 群組原則,如果您選取 [已啟用],選項面板就不會包含任何數據輸入欄位,而 SyncML 的承載就是 。<enabled/> 不過,如果選項面板中有數據輸入字段,MDM 伺服器必須提供此數據。 下列啟用 群組原則 範例說明此複雜性。 在此範例中,承載中的標記會描述 <data /> 10 個名稱/值組,這會對應至 [發佈伺服器 2 設定] 群組原則 之 [群組原則 編輯器 選項] 面板中的 10 個數據輸入字段。 定義組策略的 ADMX 檔案會由 MDM 伺服器取用,類似於 群組原則 編輯器 取用它的方式。 群組原則 編輯器 會顯示UI以接收完整的 群組原則 實例數據,MDM 伺服器的IT系統管理員控制台也必須這麼做。 對於ADMX原則定義中的每個 <text> 元素和ID屬性,承載中必須有對應 <data /> 的專案和ID屬性。 ADMX 檔案會驅動原則定義,而且 MDM 伺服器需要透過 SyncML 通訊協定。

重要

任何顯示在 群組原則 編輯器 群組原則 頁面中的數據輸入欄位,都必須在 SyncML 承載的編碼 XML 中提供。 SyncML 資料承載相當於使用者透過 GPEdit.msc 提供的 群組原則 資料。

如需 群組原則 描述格式的詳細資訊,請參閱系統管理範本檔案 (ADMX) 格式。 元素可以是 Text、MultiText、Boolean、Enum、Decimal 或 List (,如需詳細資訊,請參閱原則 元素) 。

例如,如果您在 appv.admx 檔案的啟 原則範例及其對應的 ADMX 原則定義中搜尋字串 「Publishing_Server2_Name_Prompt」,您會發現下列專案:

啟用原則範例:

`<data id="Publishing_Server2_Name_Prompt" value="name"/>`

Appv.admx 檔案:

      <elements>
        <text id="Publishing_Server2_Name_Prompt" valueName="Name" required="true"/>

ADMX 原則範例

下列 SyncML 範例說明如何設定 ADMX 範本所定義的 MDM 原則,特別是應用程式虛擬化 ADMX 檔案 appv.admx 中的Publishing_Server2_Policy 群組原則描述。 此 群組原則 管理的功能並不重要;它僅用來說明 MDM ISV 如何設定 ADMX 原則。 這些 SyncML 範例說明可用於測試原則的常見選項和對應的 SyncML 程式代碼。 SyncML 的承載必須是 XML 編碼;針對此 XML 編碼,您可以使用我的最愛在線工具。 若要避免編碼承載,如果您的 MDM 支援,您可以使用 CData。 如需詳細資訊,請參閱 CDATA 區段

啟用原則

承載

<enabled/>
<data id="Publishing_Server2_Name_Prompt" value="Name"/>
<data id="Publishing_Server_URL_Prompt" value="http://someuri"/>
<data id="Global_Publishing_Refresh_Options" value="1"/>
<data id="Global_Refresh_OnLogon_Options" value="0"/>
<data id="Global_Refresh_Interval_Prompt" value="15"/>
<data id="Global_Refresh_Unit_Options" value="0"/>
<data id="User_Publishing_Refresh_Options" value="0"/>
<data id="User_Refresh_OnLogon_Options" value="0"/>
<data id="User_Refresh_Interval_Prompt" value="15"/>
<data id="User_Refresh_Unit_Options" value="1"/>

要求 SyncML

<?xml version="1.0" encoding="utf-8"?>
<SyncML xmlns="SYNCML:SYNCML1.2">
  <SyncBody>
    <Replace>
      <CmdID>2</CmdID>
      <Item>
        <Meta>
          <Format>chr</Format>
          <Type>text/plain</Type>
        </Meta>
        <Target>
          <LocURI>./Device/Vendor/MSFT/Policy/Config/AppVirtualization/PublishingAllowServer2</LocURI>
        </Target>
        <Data>
        <![CDATA[<enabled/><data id="Publishing_Server2_Name_Prompt" value="name prompt"/><data
          id="Publishing_Server_URL_Prompt" value="URL prompt"/><data
          id="Global_Publishing_Refresh_Options" value="1"/><data
          id="Global_Refresh_OnLogon_Options" value="0"/><data
          id="Global_Refresh_Interval_Prompt" value="15"/><data
          id="Global_Refresh_Unit_Options" value="0"/><data
          id="User_Publishing_Refresh_Options" value="0"/><data
          id="User_Refresh_OnLogon_Options" value="0"/><data
          id="User_Refresh_Interval_Prompt" value="15"/><data
          id="User_Refresh_Unit_Options" value="1"/>]]>
        </Data>
      </Item>
    </Replace>
    <Final/>
  </SyncBody>
</SyncML>

回應 SyncML

<Status>
  <CmdID>2</CmdID>
  <MsgRef>1</MsgRef>
  <CmdRef>2</CmdRef>
  <Cmd>Replace</Cmd>
  <Data>200</Data>
</Status>

停用原則

承載

<disabled/>

要求 SyncML

<?xml version="1.0" encoding="utf-8"?>
<SyncML xmlns="SYNCML:SYNCML1.2">
  <SyncBody>
    <Replace>
      <CmdID>2</CmdID>
      <Item>
        <Meta>
          <Format>chr</Format>
          <Type>text/plain</Type>
        </Meta>
        <Target>
          <LocURI>./Device/Vendor/MSFT/Policy/Config/AppVirtualization/PublishingAllowServer2</LocURI>
        </Target>
        <Data><![CDATA[<disabled/>]]></Data>
      </Item>
    </Replace>
    <Final/>
  </SyncBody>
</SyncML>

回應 SyncML

<Status>
  <CmdID>2</CmdID>
  <MsgRef>1</MsgRef>
  <CmdRef>2</CmdRef>
  <Cmd>Replace</Cmd>
  <Data>200</Data>
</Status>

將原則設定為未設定

承載

(無)

要求 SyncML

<?xml version="1.0" encoding="utf-8"?>
<SyncML xmlns="SYNCML:SYNCML1.2">
  <SyncBody>
    <Delete>
      <CmdID>1</CmdID>
      <Item>
        <Target>
          <LocURI>./Device/Vendor/MSFT/Policy/Config/AppVirtualization/PublishingAllowServer2</LocURI>
        </Target>
      </Item>
    </Delete>
    <Final/>
  </SyncBody>
</SyncML>

回應 SyncML

<Status>
  <CmdID>2</CmdID>
  <MsgRef>1</MsgRef>
  <CmdRef>1</CmdRef>
  <Cmd>Delete</Cmd>
  <Data>200</Data>
</Status>

各種 ADMX 元素的範例 SyncML

本節說明各種 ADMX 元素的範例 SyncML,例如 Text、Multi-Text、Decimal、Boolean 和 List。

群組原則 原則類別目錄路徑和名稱如何對應至 MDM 區域和原則名稱

以下是 群組原則 與 MDM 區域和名稱的內部 OS 對應。 此對應是一組 Windows 指令清單的一部分,編譯後會剖析相關聯的 ADMX 檔案、尋找指定的 群組原則 原則,並將該定義 (元數據儲存在 MDM 原則 CSP 用戶端存放區中) 。 ADMX 支持的原則是以階層方式組織。 其範圍可以是 計算機使用者,或具有 者的範圍。 透過 SyncML 命令和原則 CSP URI 參考 MDM 原則時,如所示,會參考此元數據,並判斷要設定或移除哪些登錄機碼。 計算機範圍原則是透過 .\Device 和使用者範圍原則透過 .\User 來參考。

./[Device|User]/Vendor/MSFT/Policy/Config/[config|result]/<area>/<policy>

SyncML 的數據承載必須進行編碼,以免與未定案的 SyncML XML 標記發生衝突。 使用此在線工具來編碼和譯碼原則數據 編碼器的工具箱

AppVirtualization 區域指令清單的代碼段

<identity xmlns="urn:Microsoft.CompPlat/ManifestSchema.v1.00"  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" owner="Microsoft" namespace="Windows-DeviceManagement-PolicyDefinition" name="AppVirtualization">
  <policyDefinitions>
    <area name="AppVirtualization">
      <policies>
         ...
         <stringPolicy name="PublishingAllowServer2" notSupportedOnPlatform="phone" admxbacked="appv.admx" scope="machine">
            <ADMXPolicy area="appv~AT~System~CAT_AppV~CAT_Publishing" name="Publishing_Server2_Policy" scope="machine" />
           <registryKeyRedirect path="SOFTWARE\Policies\Microsoft\AppV\Client\Publishing\Servers\2" />
         </stringPolicy >
         ...

上述 GP 原則的 LocURI 為:

./Device/Vendor/MSFT/Policy/Config/AppVirtualization/PublishingAllowServer2

若要使用下列範例為您的區域/原則建構 SyncML,您需要更新 SyncML 區段中<Data>的數據識別符。 前面加上 '&' 字元的專案是所需的逸出字元,而且可以保留,如下所示。

Text 元素

元素 text 只會對應至字串,並且對應至 gpedit.msc 顯示之原則面板中的編輯框。 字串會儲存在 REG_SZ 類型的登錄中。

ADMX 檔案:inetres.admx

<policy name="RestrictHomePage" class="User" displayName="$(string.RestrictHomePage)" explainText="$(string.IE_ExplainRestrictHomePage)" presentation="$(presentation.RestrictHomePage)" key="Software\Policies\Microsoft\Internet Explorer\Control Panel" valueName="HomePage">
  <parentCategory ref="InternetExplorer" />
  <supportedOn ref="SUPPORTED_IE5" />
  <elements>
    <text id="EnterHomePagePrompt" key="Software\Policies\Microsoft\Internet Explorer\Main" valueName="Start Page" required="true" />
  </elements>
</policy>

對應的 SyncML

<?xml version="1.0" encoding="utf-8"?>
<SyncML xmlns="SYNCML:SYNCML1.2">
  <SyncBody>
    <Replace>
      <CmdID>$CmdId$</CmdID>
      <Item>
        <Meta>
          <Format>chr</Format>
          <Type>text/plain</Type>
        </Meta>
        <Target>
          <LocURI>./User/Vendor/MSFT/Policy/Config/InternetExplorer/DisableHomePageChange</LocURI>
        </Target>
        <Data><![CDATA[<enabled/><data id="EnterHomePagePrompt" value="mystartpage"/>]]></Data>
      </Item>
    </Replace>
    <Final/>
  </SyncBody>
</SyncML>

MultiText 元素

元素 multiText 只會對應至REG_MULTISZ登錄字串,並相對於方格,以在 gpedit.msc 顯示的原則面板中輸入多個字元串。 預期 SyncML 中的每個字串都會以 Unicode 字元分隔0xF000 (编码版本: &#xF000;)

<policy name="Virtualization_JITVAllowList" class="Machine" displayName="$(string.Virtualization_JITVAllowList)"
        explainText="$(string.Virtualization_JITVAllowList_Help)" presentation="$(presentation.Virtualization_JITVAllowList)"
          key="SOFTWARE\Policies\Microsoft\AppV\Client\Virtualization"
          valueName="ProcessesUsingVirtualComponents">
    <parentCategory ref="CAT_Virtualization" />
    <supportedOn ref="windows:SUPPORTED_Windows7" />
    <elements>
    <multiText id="Virtualization_JITVAllowList_Prompt" valueName="ProcessesUsingVirtualComponents" />
    </elements>
</policy>

對應的 SyncML

<?xml version="1.0" encoding="utf-8"?>
<SyncML xmlns="SYNCML:SYNCML1.2">
  <SyncBody>
    <Replace>
      <CmdID>2</CmdID>
      <Item>
        <Meta>
          <Format>chr</Format>
          <Type>text/plain</Type>
        </Meta>
        <Target>
          <LocURI>./Device/Vendor/MSFT/Policy/Config/AppVirtualization/VirtualComponentsAllowList</LocURI>
        </Target>
        <Data><![CDATA[<enabled/><data id="Virtualization_JITVAllowList_Prompt" value="C:\QuickPatch\TEST\snot.exe&#xF000;C:\QuickPatch\TEST\foo.exe&#xF000;C:\QuickPatch\TEST\bar.exe"/>]]></Data>
      </Item>
    </Replace>
    <Final/>
  </SyncBody>
</SyncML>

List 元素 (及其變化)

元素 list 只會對應至REG_SZ登錄字串的登錄區,並對應到網格線,以在 gpedit.msc 顯示的原則面板中輸入多個字串。 此專案在 SyncML 中的表示方式是以包含字串配對的字串表示。 每個配對都是REG_SZ名稱/值索引鍵。 最好透過 gpedit.msc 套用原則, (以系統管理員) 身分執行,然後移至登錄區位置,並查看清單值的儲存方式。 此位置可讓您了解名稱/值組的儲存方式,以透過SyncML 表示。

注意

預期 SyncML 中的每個字串都會以 Unicode 字元分隔0xF000 (编码版本: &#xF000;) 。

元素的變化 list 是由屬性所決定。 原則管理員運行時間會忽略這些屬性。 MDM 伺服器應該會管理名稱/值組。 以下是 群組原則 清單的一些範例。

ADMX 檔案:inetres.admx

<policy name="SecondaryHomePages" class="Both" displayName="$(string.SecondaryHomePages)" explainText="$(string.IE_ExplainSecondaryHomePages)" presentation="$(presentation.SecondaryHomePages)" key="Software\Policies\Microsoft\Internet Explorer\Main\SecondaryStartPages">
  <parentCategory ref="InternetExplorer" />
  <supportedOn ref="SUPPORTED_IE8" />
  <elements>
    <list id="SecondaryHomePagesList" additive="true" />
  </elements>
</policy>

對應的 SyncML

<SyncML xmlns="SYNCML:SYNCML1.2">
  <SyncBody>
    <Replace>
      <CmdID>2</CmdID>
      <Item>
        <Meta>
          <Format>chr</Format>
          <Type>text/plain</Type>
        </Meta>
        <Target>
          <LocURI>./User/Vendor/MSFT/Policy/Config/InternetExplorer/DisableSecondaryHomePageChange</LocURI>
        </Target>
        <Data><![CDATA[<Enabled/><Data id="SecondaryHomePagesList" value="http://name1&#xF000;http://name1&#xF000;http://name2&#xF000;http://name2"/>]]></Data>
      </Item>
    </Replace>
    <Final/>
  </SyncBody>
</SyncML>

沒有元素

<policy name="NoUpdateCheck" class="Machine" displayName="$(string.NoUpdateCheck)" explainText="$(string.IE_ExplainNoUpdateCheck)" key="Software\Policies\Microsoft\Internet Explorer\Infodelivery\Restrictions" valueName="NoUpdateCheck">
  <parentCategory ref="InternetExplorer" />
  <supportedOn ref="SUPPORTED_IE5_6" />
</policy>

對應的 SyncML

<SyncML xmlns="SYNCML:SYNCML1.2">
  <SyncBody>
    <Replace>
      <CmdID>2</CmdID>
      <Item>
        <Meta>
          <Format>chr</Format>
          <Type>text/plain</Type>
        </Meta>
        <Target>
          <LocURI>./Device/Vendor/MSFT/Policy/Config/InternetExplorer/DisableUpdateCheck</LocURI>
        </Target>
        <Data><![CDATA[<Enabled/>]]></Data>
      </Item>
    </Replace>
    <Final/>
  </SyncBody>
</SyncML>

枚舉

<policy name="EncryptionMethodWithXts_Name" class="Machine" displayName="$(string.EncryptionMethodWithXts_Name)" explainText="$(string.EncryptionMethodWithXts_Help)" presentation="$(presentation.EncryptionMethodWithXts_Name)" key="SOFTWARE\Policies\Microsoft\FVE">
    <parentCategory ref="FVECategory" />
    <!--Bug OS:4242178 -->
    <supportedOn ref="windows:SUPPORTED_Windows_10_0" />
    <elements>
        <enum id="EncryptionMethodWithXtsOsDropDown_Name" valueName="EncryptionMethodWithXtsOs" required="true">
            <item displayName="$(string.EncryptionMethodDropDown_AES128_Name2)">
                <value>
                    <decimal value="3" />
                </value>
            </item>
            <item displayName="$(string.EncryptionMethodDropDown_AES256_Name2)">
                <value>
                    <decimal value="4" />
                </value>
            </item>
            <item displayName="$(string.EncryptionMethodDropDown_XTS_AES128_Name)">
                <value>
                    <decimal value="6" />
                </value>
            </item>
            <item displayName="$(string.EncryptionMethodDropDown_XTS_AES256_Name)">
                <value>
                    <decimal value="7" />
                </value>
            </item>
        </enum>
   </elements>
</policy>

對應的 SyncML

<SyncML xmlns="SYNCML:SYNCML1.2">
  <SyncBody>
    <Replace>
      <CmdID>2</CmdID>
      <Item>
        <Target>
          <LocURI>./Device/Vendor/MSFT/Policy/Config/BitLocker/EncryptionMethodByDriveType</LocURI>
        </Target>
        <Data>
          <![CDATA[<enabled/>
          <data id="EncryptionMethodWithXtsOsDropDown_Name" value="4"/>]]>
        </Data>
      </Item>
    </Replace>
    <Final/>
  </SyncBody>
</SyncML>

Decimal 元素

<policy name="Streaming_Reestablishment_Interval" class="Machine" displayName="$(string.Streaming_Reestablishment_Interval)"
            explainText="$(string.Streaming_Reestablishment_Interval_Help)"
            presentation="$(presentation.Streaming_Reestablishment_Interval)"
            key="SOFTWARE\Policies\Microsoft\AppV\Client\Streaming">
    <parentCategory ref="CAT_Streaming" />
    <supportedOn ref="windows:SUPPORTED_Windows7" />
    <elements>
        <decimal id="Streaming_Reestablishment_Interval_Prompt" valueName="ReestablishmentInterval" minValue="0" maxValue="3600"/>
    </elements>
</policy>

對應的 SyncML

<SyncML xmlns="SYNCML:SYNCML1.2">
  <SyncBody>
    <Replace>
      <CmdID>2</CmdID>
      <Item>
        <Target>
          <LocURI>./Device/Vendor/MSFT/Policy/Config/AppVirtualization/StreamingAllowReestablishmentInterval</LocURI>
        </Target>
        <Data>
          <![CDATA[<enabled/>
          <data id="Streaming_Reestablishment_Interval_Prompt" value="4"/>]]>
        </Data>
      </Item>
    </Replace>
    <Final/>
  </SyncBody>
</SyncML>

布爾值元素

<policy name="DeviceInstall_Classes_Deny" class="Machine" displayName="$(string.DeviceInstall_Classes_Deny)" explainText="$(string.DeviceInstall_Classes_Deny_Help)" presentation="$(presentation.DeviceInstall_Classes_Deny)" key="Software\Policies\Microsoft\Windows\DeviceInstall\Restrictions" valueName="DenyDeviceClasses">
    <parentCategory ref="DeviceInstall_Restrictions_Category" />
    <supportedOn ref="windows:SUPPORTED_WindowsVista" />
    <enabledValue>
    <decimal value="1" />
    </enabledValue>
    <disabledValue>
    <decimal value="0" />
    </disabledValue>
    <elements>
        <list id="DeviceInstall_Classes_Deny_List" key="Software\Policies\Microsoft\Windows\DeviceInstall\Restrictions\DenyDeviceClasses" valuePrefix="" />
        <boolean id="DeviceInstall_Classes_Deny_Retroactive" valueName="DenyDeviceClassesRetroactive" >
            <trueValue>
                <decimal value="1" />
            </trueValue>
            <falseValue>
                <decimal value="0" />
            </falseValue>
        </boolean>
    </elements>
</policy>

對應的 SyncML

<?xml version="1.0" encoding="utf-8"?>
<SyncML xmlns="SYNCML:SYNCML1.2">
  <SyncBody>
    <Replace>
      <CmdID>2</CmdID>
      <Item>
        <Meta>
          <Format>chr</Format>
          <Type>text/plain</Type>
        </Meta>
        <Target>
          <LocURI>./Device/Vendor/MSFT/Policy/Config/DeviceInstallation/PreventInstallationOfMatchingDeviceSetupClasses</LocURI>
        </Target>
        <Data>
          <![CDATA[<enabled/><data id="DeviceInstall_Classes_Deny_Retroactive" value="true"/>
          <Data id="DeviceInstall_Classes_Deny_List" value="1&#xF000;deviceId1&#xF000;2&#xF000;deviceId2"/>]]>
        </Data>
      </Item>
    </Replace>
    <Final/>
  </SyncBody>
</SyncML>