ApplicationControl 云解决方案提供商
企业应用控制策略可以从 MDM 服务器进行管理,也可以通过 ApplicationControl 配置服务提供商 (CSP) 通过 WMI 桥使用 PowerShell 进行本地管理。 ApplicationControl CSP 已添加到 Windows 10 版本 1903 中。 此 CSP 为 Windows 10 版本 1903) 中引入的多个策略 (提供了扩展的诊断功能和支持。 它还支持 Windows 10 版本 1709) 中引入的策略部署 (无需重新启动。 与 AppLocker CSP 不同,ApplicationControl CSP 正确检测到存在“不重启”选项,因此不会计划重新启动。
现在,可以使用 ApplicationControl CSP URI 部署使用 AppLocker CSP 的 CodeIntegrity 节点部署的现有企业应用控制策略。 尽管将继续支持使用 AppLocker CSP 的应用控制策略部署,但所有新功能工作将仅在 ApplicationControl CSP 中完成。
以下列表显示了 ApplicationControl 配置服务提供程序节点:
- ./Vendor/MSFT/ApplicationControl
策略
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ❌ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1903 [10.0.18362] 及更高版本 |
./Vendor/MSFT/ApplicationControl/Policies
包含所有策略的子树的开头。
每个策略通过其全局唯一标识符 (GUID) 进行标识。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | node |
访问类型 | “获取” |
策略/{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 的“ID”段与策略 Blob 中的策略 ID 相同。 |
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 作为 OS 的一部分进行管理。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | 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 指示的策略的策略选项。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
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}
用于区分令牌的任意 ID。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | node |
访问类型 | “获取” |
动态节点命名 | UniqueName:ApplicationControl CSP 强制给定令牌 URI 的“ID”段是唯一的。 |
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
描述由相应 ID 指示的令牌的信息。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | node |
访问类型 | “获取” |
Tokens/{ID}/TokenInfo/Status
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ❌ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1903 [10.0.18362] 及更高版本 |
./Vendor/MSFT/ApplicationControl/Tokens/{ID}/TokenInfo/Status
令牌 ID 指示的令牌的当前状态。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | int |
访问类型 | “获取” |
Tokens/{ID}/TokenInfo/type
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ❌ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1903 [10.0.18362] 及更高版本 |
./Vendor/MSFT/ApplicationControl/Tokens/{ID}/TokenInfo/Type
令牌 ID 指示的令牌类型。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | 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使用指南
对于通过 ApplicationControl CSP 将Intune独立或混合管理与 Configuration Manager 配合使用以部署自定义策略的客户,请参阅使用 Microsoft Intune 部署适用于企业的应用控制策略。
通用 MDM 服务器使用指南
若要在不使用Intune的情况下使用 ApplicationControl CSP,必须:
- 了解生成的策略的 GUID,该 GUID 可在 1903 年之前的系统中作为 或
<PolicyTypeID>
在策略 xml<PolicyID>
中找到。 - 使用
ConvertFrom-CIPolicy
cmdlet 将策略转换为二进制格式,以便进行部署。 二进制策略可以是有符号的,也可以是无符号的。 - 使用
certutil -encode
命令行工具 (二进制策略表示形式的 Base64 编码 blob) 创建策略节点。
下面是 certutil 调用示例:
certutil -encode WinSiPolicy.p7b WinSiPolicy.cer
使用 certutil 的替代方法是使用以下 PowerShell 调用:
[Convert]::toBase64String($(Get-Content -Encoding Byte -ReadCount 0 -Path <bin file>))
部署策略
若要使用 CSP 部署新的基本策略,请在 ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy 上使用 Base64 编码的策略节点作为 {Data} 执行 ADD。 请参阅以下示例 1 中的“格式”部分。
若要部署基本策略和补充策略,请执行以下操作:
- 在 ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy 上使用 Base64 编码的策略节点作为 {Data} 执行 ADD,以及基本策略的 GUID 和策略数据。
- 为每个基策略或补充策略 (及其自己的 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,以询问/检查策略本身或有关该策略的信息。
下表显示了不同节点上的 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/Policy 执行 DELETE。
已签名策略
注意
默认情况下,已签名的策略只能替换为另一个已签名策略。 因此,对 ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy 执行 DELETE 不足以删除已签名的策略。
若要删除已签名的策略,请执行以下操作:
- 将其替换为允许未签名策略的已签名更新。
- 使用未签名的“全部允许”策略部署另一个更新。
- 执行删除。
Delete 命令的一个示例是:
<Delete>
<CmdID>1</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/ApplicationControl/Policies/{PolicyGUID}/Policy</LocURI>
</Target>
</Item>
</Delete>
PowerShell 和 WMI 网桥使用指南
还可以从 PowerShell 本地管理 ApplicationControl CSP,也可以使用 WMI 桥接提供程序通过Configuration Manager的任务序列脚本进行管理。
设置使用 WMI 桥
将应用控制策略转换为 Base64。
通过 PSExec 或类似) 打开本地系统上下文 (PowerShell。
使用 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