ApplicationControl CSP

Windows Defender 應用程控 (WDAC) 原則可從 MDM 伺服器管理,或透過 WMI 網橋透過 WMI 網橋在本機管理, (CSP) 。 ApplicationControl CSP 已在 Windows 10 1903 版中新增。 此 CSP 針對 Windows 10 版本 1903) 中導入的多個原則,提供擴充的診斷功能和支援 (。 它也支援 Windows 10 版本 1709) 中引進的原則部署 (,而不需要重新啟動。 不同於 AppLocker CSP,ApplicationControl CSP 會正確偵測到 [無重新啟動] 選項的存在,因此不會排程重新啟動。

使用 AppLocker CSP 的 CodeIntegrity 節點部署的現有 Windows Defender 應用程控 (WDAC) 原則,現在可以使用 ApplicationControl CSP URI 來部署。 雖然仍會繼續支援使用AppLocker CSP的 WDAC 原則部署,但所有新的功能工作都只會在ApplicationControl CSP 中完成。

下列清單顯示 ApplicationControl 設定服務提供者節點:

原則

領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Policies

包含所有原則之子樹的開頭。

每個原則都是以其全域唯一標識碼 (GUID) 來識別。

描述架構屬性:

屬性名稱 屬性值
格式 node
存取類型 [取得]

Policies/{Policy GUID}

領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}

原則的 GUID。

每個原則 GUID 節點都包含原則節點和對應的 PolicyInfo 節點。

描述架構屬性:

屬性名稱 屬性值
格式 node
存取類型 [取得]
動態節點命名 UniqueName:ApplicationControl CSP 會強制指定原則 URI 的「標識符」區段與原則 Blob 中的原則標識符相同。

Policies/{Policy GUID}/Policy

領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/Policy

編碼為base64的原則二進位檔。 支援的值是二進位檔,由 ConvertFrom-CIPolicy Cmdlet 從原則 XML 檔案轉換而來。

預設值是空的。

描述架構屬性:

屬性名稱 屬性值
格式 b64
存取類型 新增、刪除、取得、取代

Policies/{Policy GUID}/PolicyInfo

領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo

描述 GUID 所指示之原則的資訊。

描述架構屬性:

屬性名稱 屬性值
格式 node
存取類型 [取得]
Policies/{Policy GUID}/PolicyInfo/BasePolicyId
領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/BasePolicyId

原則 GUID 指示之原則的BasePolicyId。

描述架構屬性:

屬性名稱 屬性值
格式 chr (字串)
存取類型 [取得]
Policies/{Policy GUID}/PolicyInfo/FriendlyName
領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/FriendlyName

原則 GUID 指示之原則的 FriendlyName。

描述架構屬性:

屬性名稱 屬性值
格式 chr (字串)
存取類型 [取得]
Policies/{Policy GUID}/PolicyInfo/IsAuthorized
領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/IsAuthorized

GUID 所指示的原則是否有權由系統上的強制引擎載入。

支援的值如下:

  • True:表示系統上的強制引擎已授權載入原則。
  • False:表示系統上的強制引擎未授權載入原則。 此值為預設值。

描述架構屬性:

屬性名稱 屬性值
格式 bool
存取類型 [取得]
Policies/{Policy GUID}/PolicyInfo/IsBasePolicy
領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/IsBasePolicy

TRUE/FALSE 如果原則是基底原則與補充原則。

描述架構屬性:

屬性名稱 屬性值
格式 bool
存取類型 [取得]
Policies/{Policy GUID}/PolicyInfo/IsDeployed
領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/IsDeployed

GUID 所指示的原則是否部署在實體電腦上的系統 ()

支援的值如下:

  • True:表示原則已部署在系統上,且存在於實體計算機上。
  • False:表示原則未部署在系統上,且不存在於實體計算機上。 此值為預設值。

描述架構屬性:

屬性名稱 屬性值
格式 bool
存取類型 [取得]
Policies/{Policy GUID}/PolicyInfo/IsEffective
領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/IsEffective

GUID 所指示的原則是否在強制引擎載入的系統 (上有效,實際上)

支援的值如下:

  • True:表示原則是由強制引擎載入,並且在系統上生效。
  • False:表示原則不是由強制引擎載入,也不會在系統上生效。 此值為預設值。

描述架構屬性:

屬性名稱 屬性值
格式 bool
存取類型 [取得]
Policies/{Policy GUID}/PolicyInfo/IsSystemPolicy
領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/IsSystemPolicy

如果原則是系統原則,則為TRUE/FALSE,這是 Microsoft 在操作系統中管理的原則。

描述架構屬性:

屬性名稱 屬性值
格式 bool
存取類型 [取得]
Policies/{Policy GUID}/PolicyInfo/PolicyOptions
領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/PolicyOptions

原則 GUID 所指示原則的 PolicyOptions。

描述架構屬性:

屬性名稱 屬性值
格式 chr (字串)
存取類型 [取得]
Policies/{Policy GUID}/PolicyInfo/Status
領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/Status

原則 GUID 所指示原則的目前狀態。

預設值為 0,表示原則狀態為 OK

描述架構屬性:

屬性名稱 屬性值
格式 int
存取類型 [取得]
Policies/{Policy GUID}/PolicyInfo/Version
領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/Version

GUID 所指示的原則版本,以字串形式表示。 剖析時,請使用 uint64 作為包含的數據類型。

描述架構屬性:

屬性名稱 屬性值
格式 chr (字串)
存取類型 [取得]

令牌

領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Tokens

包含所有令牌的子樹的開頭。

描述架構屬性:

屬性名稱 屬性值
格式 node
存取類型 [取得]

Tokens/{ID}

領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Tokens/{ID}

用來區分令牌的任意標識碼。

描述架構屬性:

屬性名稱 屬性值
格式 node
存取類型 [取得]
動態節點命名 UniqueName:ApplicationControl CSP 會強制指定令牌 URI 的「標識符」區段是唯一的。

Tokens/{ID}/Token

領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Tokens/{ID}/Token

編碼為base64的令牌二進位檔。 支援的值是從 OneCoreDeviceUnlockService 取得的二進位檔。

描述架構屬性:

屬性名稱 屬性值
格式 b64
存取類型 新增、刪除、取得、取代

Tokens/{ID}/TokenInfo

領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Tokens/{ID}/TokenInfo

資訊 描述對應標識碼所指出的令牌。

描述架構屬性:

屬性名稱 屬性值
格式 node
存取類型 [取得]
Tokens/{ID}/TokenInfo/Status
領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Tokens/{ID}/TokenInfo/Status

令牌標識碼所指出之令牌的目前狀態。

描述架構屬性:

屬性名稱 屬性值
格式 int
存取類型 [取得]
Tokens/{ID}/TokenInfo/Type
領域 版本 適用的作業系統
✅ 裝置
❌ 使用者
✅ 專業版
✅ 企業版
✅ 教育版
✅ Windows SE
✅ IoT 企業版 / IoT 企業版 LTSC
✅Windows 10,版本 1903 [10.0.18362] 和更新版本
./Vendor/MSFT/ApplicationControl/Tokens/{ID}/TokenInfo/Type

令牌識別碼所指出的令牌類型。

描述架構屬性:

屬性名稱 屬性值
格式 int
存取類型 [取得]

IsAuthorized、IsDeployed 和 IsEffective 值

下表根據IsAuthorized、IsDeployed和IsEffective節點的不同值,提供此原則的結果:

IsAuthorized IsDeployed IsEffective 結果
True True True 原則目前正在執行,且已生效。
True True False 原則需要重新啟動才能生效。
True False True 原則需要重新啟動才能從 CI 卸除。
False True True 無法連線。
True False False *無法連線。
False True False *無法連線。
False False True 無法連線。
False False False *無法連線。

* 表示有效的中繼狀態;不過,如果 MDM 交易導致此狀態設定, END_COMMAND_PROCESSING 則會導致失敗。

Microsoft Intune 使用指引

若客戶使用 Intune 獨立或混合式管理與 Configuration Manager 透過 ApplicationControl CSP 部署自定義原則,請參閱使用 Microsoft Intune 部署 Windows Defender 應用程控原則

一般 MDM 伺服器使用方式指引

若要在不使用 Intune 的情況下使用 ApplicationControl CSP,您必須:

  1. 知道所產生原則的 GUID,這可以在原則 xml 中找到,如 1903 年之前系統或<PolicyID><PolicyTypeID>之前系統。
  2. 使用 ConvertFrom-CIPolicy Cmdlet 將原則轉換成二進位格式以進行部署。 二進位原則可能已簽署或未簽署。
  3. 使用 certutil -encode 命令行工具, (二進位原則表示法的Base64編碼 Blob 建立原則節點) 。

以下是範例 certutil invocation:

certutil  -encode WinSiPolicy.p7b WinSiPolicy.cer

使用 certutil 的替代方法是使用下列 PowerShell 調用:

[Convert]::toBase64String($(Get-Content -Encoding Byte -ReadCount 0 -Path <bin file>))

部署原則

若要使用 CSP 部署新的基底原則,請使用 Base64 編碼原則節點作為 {Data},在 ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy 上執行 ADD。 請參閱下列範例 1 中的一節。

若要部署基底原則和補充原則:

  1. 使用 Base64 編碼原則節點做為 {Data} 搭配基底原則的 GUID 和原則數據,在 ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy 上執行 ADD。
  2. 使用自己的 GUID 和數據) ,針對每個基底或補充原則 (重複。

下列範例示範兩個基底原則和補充原則 (的部署,這兩個原則已指定它所補充的基底原則,而且不需要反映在 ADD) 中。

範例 1:新增第一個基底原則

<Add>
    <CmdID>1</CmdID>
    <Item>
        <Target>
            <LocURI>./Vendor/MSFT/ApplicationControl/Policies/{Base1GUID}/Policy</LocURI>
        </Target>
        <Meta>
             <Format xmlns="syncml:metinf">b64</Format>
        </Meta>
        <Data> {Base1Data} </Data>
    </Item>
</Add>

範例 2:新增第二個基底原則

<Add>
    <CmdID>1</CmdID>
    <Item>
        <Target>
            <LocURI>./Vendor/MSFT/ApplicationControl/Policies/{Base2GUID}/Policy</LocURI>
        </Target>
        <Meta>
            <Format xmlns="syncml:metinf">b64</Format>
        </Meta>
        <Data> {Base2Data} </Data>
    </Item>
</Add>

範例 3:新增補充原則

<Add>
    <CmdID>1</CmdID>
    <Item>
        <Target>
            <LocURI>./Vendor/MSFT/ApplicationControl/Policies/{Supplemental1GUID}/Policy</LocURI>
        </Target>
        <Meta>
            <Format xmlns="syncml:metinf">b64</Format>
        </Meta>
        <Data> {Supplemental1Data} </Data>
    </Item>
</Add>

取得原則

使用已部署原則的 GUID 執行 GET,以詢問/檢查原則本身或其相關信息。

下表顯示不同節點上取得作業的結果:

節點 取得結果
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy raw p7b
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/Version 原則版本
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/IsEffective 原則是否有效
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/IsDeployed 這是系統上的原則
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/IsAuthorized 系統上是否已授權原則
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/Status 部署是否成功
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/FriendlyName 每個原則的易記名稱

Get 命令的範例為:

 <Get>
    <CmdID>1</CmdID>
        <Item>
            <Target>
                <LocURI>./Vendor/MSFT/ApplicationControl/Policies/{PolicyGUID}/Policy</LocURI>
            </Target>
        </Item>
 </Get>

刪除原則

重新啟動無刪除

刪除時,透過 ApplicationControl CSP 部署的原則會從系統中移除,但在下次重新啟動之前會保持作用。 若要在功能上執行無啟動刪除,請先將現有的原則取代為在 C:\Windows\schemas\CodeIntegrity\ExamplePolicies\AllowAll.xml) 找到的 [允許所有原則 (,然後刪除更新的原則。 此順序會立即防止任何專案遭到封鎖,並在下次重新啟動時完全停用原則。

不帶正負號的原則

若要刪除未簽署的原則,請在 ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy 上執行 DELETE。

已簽署的原則

注意

根據預設,已簽署的原則只能由另一個已簽署的原則取代。 因此,在 ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy 上執行 DELETE 並不足以刪除已簽署的原則。

若要刪除已簽署的原則:

  1. 將它取代為允許不帶正負號原則的已簽署更新。
  2. 使用不帶正負號的 [允許所有原則] 部署另一個更新。
  3. 執行刪除。

Delete 命令的範例如下:

   <Delete>
     <CmdID>1</CmdID>
        <Item>
            <Target>
                  <LocURI>./Vendor/MSFT/ApplicationControl/Policies/{PolicyGUID}/Policy</LocURI>
            </Target>
        </Item>
   </Delete>

PowerShell 和 WMI 網橋使用方式指引

您也可以使用 WMI 網橋提供者,從 PowerShell 或透過 Configuration Manager 的工作順序腳本,在本機管理 ApplicationControl CSP。

設定使用 WMI 網橋

  1. 將您的 WDAC 原則轉換為 Base64。

  2. 透過 PSExec 或類似) (在本機系統內容中開啟 PowerShell。

  3. 使用 WMI 介面:

    $namespace = "root\cimv2\mdm\dmmap"
    $policyClassName = "MDM_ApplicationControl_Policies01_01"
    $policyBase64 = "<base64policy>"
    

透過 WMI 網橋部署原則

執行下列命令。 PolicyID 是可在原則 xml 中找到的 GUID,應該在這裡使用,而不需要大括號。

New-CimInstance -Namespace $namespace -ClassName $policyClassName -Property @{ParentID="./Vendor/MSFT/ApplicationControl/Policies";InstanceID="<PolicyID>";Policy=$policyBase64}

透過 WMI 網橋查詢所有原則

Get-CimInstance -Namespace $namespace -ClassName $policyClassName

設定服務提供者參考