AssignedAccess 云解决方案提供商
AssignedAccess 配置服务提供商 (CSP) 用于配置展台或受限用户体验。 执行 CSP 后,与分配的访问权限配置文件关联的下一个用户登录名会将设备置于 CSP 配置中指定的展台模式。
若要详细了解如何配置分配的访问权限,请参阅 配置展台和受限用户体验。
以下列表显示了 AssignedAccess 配置服务提供程序节点:
- ./Vendor/MSFT/AssignedAccess
配置
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ❌ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1709 [10.0.16299] 及更高版本 |
./Vendor/MSFT/AssignedAccess/Configuration
此节点接受 AssignedAccessConfiguration xml 作为输入。
若要了解如何配置 xml 文件,请参阅 创建分配的访问权限配置 XML 文件
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | 添加、删除、获取、替换 |
示例:
获取配置
<SyncML xmlns='SYNCML:SYNCML1.2'> <SyncBody> <Get> <CmdID>2</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/AssignedAccess/Configuration</LocURI> </Target> </Item> </Get> <Final /> </SyncBody> </SyncML>
删除配置
<SyncML xmlns='SYNCML:SYNCML1.2'> <SyncBody> <Delete> <CmdID>2</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/AssignedAccess/Configuration</LocURI> </Target> </Item> </Delete> <Final /> </SyncBody> </SyncML>
KioskModeApp
注意
此策略已弃用,可能会在将来的版本中删除。
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ❌ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1507 [10.0.10240] 及更高版本 |
./Vendor/MSFT/AssignedAccess/KioskModeApp
此节点可以接受并返回包含帐户名称和展台模式应用的 AUMID 的 json 字符串。
示例: {"User":"domain\\user", "AUMID":"Microsoft.WindowsCalculator_8wekyb3d8bbwe!App"}
。
配置展台模式应用时,帐户名称将用于查找目标用户。 帐户名称包括域名和用户名。 如果用户名在整个系统中是唯一的,则域名可以是可选的。 对于本地帐户,域名应为计算机名称。 在此节点上执行“Get”时,始终在输出中返回域名。
此节点支持 Add、Delete、Replace 和 Get 方法。 如果没有配置,“Get”和“Delete”方法将失败。 如果已有展台模式应用的配置,“Add”方法将失败。 “添加”和“替换”的数据模式相同。
提示
在上面的示例中,双精度 \\
值是必需的,因为它位于 JSON 中,JSON 转 \\
义为 \
。 如果 MDM 服务器使用 JSON 分析器\composer,则他们应要求客户仅键入一个 \
将在 \\
JSON 中。 如果用户类型 \\
,它将变为 \\\\
JSON 格式,这将导致错误的结果。 出于同样的原因, domain\user
在配置 xml 中使用的 不需要 \\
,但只需要一个 \
,因为 xml 不 (需要) 转义 \
。
这同时适用于 domain\user
, AzureAD\someone@contoso.onmicrosoft.com
只要 \
在 JSON 字符串中使用 。
有关如何获取 AUMID 的详细信息,请参阅 查找已安装应用的应用程序用户模型 ID。
重要提示
- 在 Windows 10 版本 1803 中,配置节点引入了单个应用展台配置文件来替换 KioskModeApp CSP 节点。 KioskModeApp 节点即将弃用,因此,应使用配置节点的配置 xml 中的单个应用展台配置文件来配置面向公众的单一应用展台。
- 此外,从 Windows 10 版本 1803 开始,如果在设备上配置了配置节点,则 KioskModeApp 节点将成为 No-Op。 如果设置了“配置”节点,KioskModeApp 节点上的“添加/替换/删除”命令始终将 SUCCESS 返回到 MDM 服务器,但 KioskModeApp 的数据不会对设备产生任何影响。 KioskModeApp 上的 Get 命令将返回配置的 JSON 字符串,即使它无效。
- 不能在设备上同时设置 KioskModeApp 和 ShellLauncher。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | 添加、删除、获取、替换 |
示例:
添加 KioskModeApp
<SyncML xmlns='SYNCML:SYNCML1.2'> <SyncBody> <Add> <CmdID>2</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/AssignedAccess/KioskModeApp</LocURI> </Target> <Meta> <Format xmlns="syncml:metinf">chr</Format> </Meta> <Data>{"Account":"Domain\\AccountName","AUMID":"Microsoft.WindowsCalculator_8wekyb3d8bbwe!App"}</Data> </Item> </Add> <Final /> </SyncBody> </SyncML>
删除 KioskModeApp
<SyncML xmlns='SYNCML:SYNCML1.2'> <SyncBody> <Delete> <CmdID>2</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/AssignedAccess/KioskModeApp</LocURI> </Target> </Item> </Delete> <Final /> </SyncBody> </SyncML>
获取 KioskModeApp
<SyncML xmlns='SYNCML:SYNCML1.2'> <SyncBody> <Get> <CmdID>2</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/AssignedAccess/KioskModeApp</LocURI> </Target> </Item> </Get> <Final /> </SyncBody> </SyncML>
替换 KioskModeApp
<SyncML xmlns='SYNCML:SYNCML1.2'> <SyncBody> <Replace> <CmdID>2</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/AssignedAccess/KioskModeApp</LocURI> </Target> <Meta> <Format xmlns="syncml:metinf">chr</Format> </Meta> <Data>{"Account":"Domain\\AccountName","AUMID":"Microsoft.WindowsAlarms_8wekyb3d8bbwe!App"}</Data> </Item> </Replace> <Final /> </SyncBody> </SyncML>
ShellLauncher
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ❌ 用户 |
❌ 专业版 ✅ 企业版 ✅ 教育版 ❌ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1803 [10.0.17134] 及更高版本 |
./Vendor/MSFT/AssignedAccess/ShellLauncher
此节点接受 ShellLauncherConfiguration xml 作为输入。
若要了解 Shell 启动器,请参阅 什么是 Shell Launcher?。
重要提示
不能在设备上同时设置 ShellLauncher 和 KioskModeApp。
注意
使用 ShellLauncher 节点配置 Shell 启动器会自动启用 Shell 启动器功能(如果 SKU 中可用)。
Shell 启动器作为一项功能,ShellLauncher 节点都需要 Windows 企业版或 Windows 教育版才能正常运行。 Windows 10 专业版不支持 ShellLauncher 节点。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | 添加、删除、获取、替换 |
下面是 Shell Launcher XSD 参考文章: Shell Launcher XML 架构定义 (XSD) 。
示例:
添加
<SyncML xmlns='SYNCML:SYNCML1.2'> <SyncBody> <Add> <CmdID>2</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/AssignedAccess/ShellLauncher</LocURI> </Target> <Meta> <Format xmlns="syncml:metinf">chr</Format> </Meta> <Data> <![CDATA[ <!-- Add your XML configuration. For more information, see the Shell Launcher XSD reference article. --> ]]> </Data> </Item> </Add> <Final /> </SyncBody> </SyncML>
“获取”
<SyncML xmlns='SYNCML:SYNCML1.2'> <SyncBody> <Get> <CmdID>2</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/AssignedAccess/ShellLauncher</LocURI> </Target> </Item> </Get> <Final /> </SyncBody> </SyncML>
状态
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ❌ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1803 [10.0.17134] 及更高版本 |
./Vendor/MSFT/AssignedAccess/Status
此只读节点包含展台运行状况事件 xml。
这允许 MDM 服务器查询当前 KioskModeAppRuntimeStatus,只要 StatusConfiguration 节点设置为“On”或“OnWithAlerts”。 如果 StatusConfiguration 为“关闭”,则会向 MDM 服务器报告“找不到节点”错误。
从 Windows 10 版本 1809 开始,分配的访问权限运行时状态支持监视单应用展台和多应用模式。 下面是可能的状态代码:
状态代码 | 状态 | 描述 |
---|---|---|
0 | Unknown | 未知状态。 |
1 | Running | AssignedAccess 帐户 (展台或多应用) 正常运行。 |
2 | AppNotFound | 展台应用未部署到计算机。 |
3 | ActivationFailed | AssignedAccess 帐户 (展台或多应用) 无法登录。 |
4 | AppNoResponse | 展台应用已成功启动,但现在无响应。 |
此外,状态有效负载包括以下字段:
- profileId:MDM 服务器可以使用它来关联导致错误的帐户。
- OperationList:它提供应用分配的访问权限 CSP 时发生的失败操作列表(如果有)。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | “获取” |
AssignedAccessAlert XSD:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.microsoft.com/AssignedAccess/2018/AssignedAccessAlert"
xmlns:default="http://schemas.microsoft.com/AssignedAccess/2018/AssignedAccessAlert"
targetNamespace="http://schemas.microsoft.com/AssignedAccess/2018/AssignedAccessAlert"
>
<xs:simpleType name="status_t">
<xs:restriction base="xs:int">
<xs:enumeration value="0"/> <!-- Unknown -->
<xs:enumeration value="1"/> <!-- Running -->
<xs:enumeration value="2"/> <!-- AppNotFound -->
<xs:enumeration value="3"/> <!-- ActivationFailed -->
<xs:enumeration value="4"/> <!-- AppNoResponse -->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="guid_t">
<xs:restriction base="xs:string">
<xs:pattern value="\{[0-9a-fA-F]{8}\-([0-9a-fA-F]{4}\-){3}[0-9a-fA-F]{12}\}"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="operation_t">
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="errorCode" type="xs:int" minOccurs="1" maxOccurs="1"/>
<xs:element name="data" type="xs:string" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="operationlist_t">
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="Operation" type="operation_t" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="event_t">
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="status" type="status_t" minOccurs="1" maxOccurs="1"/>
<xs:element name="profileId" type="guid_t" minOccurs="1" maxOccurs="1"/>
<xs:element name="errorCode" type="xs:int" minOccurs="0" maxOccurs="1"/>
<xs:element name="OperationList" type="operationlist_t" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="Name" type="xs:string" use="required"/>
</xs:complexType>
<xs:element name="Events">
<xs:complexType>
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element name="Event" type="event_t" minOccurs="1" maxOccurs="1"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
示例:
<SyncML xmlns='SYNCML:SYNCML1.2'>
<SyncBody>
<Get>
<CmdID>2</CmdID>
<Item>
<Target>
<LocURI>./Device/Vendor/MSFT/AssignedAccess/Status</LocURI>
</Target>
</Item>
</Get>
<Final />
</SyncBody>
</SyncML>
StatusConfiguration
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ❌ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1803 [10.0.17134] 及更高版本 |
./Vendor/MSFT/AssignedAccess/StatusConfiguration
此节点接受 StatusConfiguration xml 作为输入。
StatusConfiguration xml 中 StatusEnabled 节点有三个可能的值:
- 开
- OnWithAlerts
- 关闭
默认情况下,StatusConfiguration 节点不存在,这意味着此功能处于关闭状态。 通过 CSP 启用后,分配的访问权限将检查展台应用状态,并等待 MDM 服务器从“状态”节点查询最新状态。 (可选)MDM 服务器可以选择加入 MDM 警报,以便在分配的访问运行时状态更改时生成 MDM 警报并立即发送到 MDM 服务器。 此 MDM 警报将包含通过“状态”节点提供的状态有效负载。 此 MDM 警报标头定义如下:
- MDMAlertMark:
Critical
- MDMAlertType:
com.microsoft.mdm.assignedaccess.status
- MDMAlertDataType:
string
- 源:
./Vendor/MSFT/AssignedAccess
- 目标:
N/A
注意
仅针对错误发送 MDM 警报。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | 添加、删除、获取、替换 |
StatusConfiguration XSD:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.microsoft.com/AssignedAccess/2018/StatusConfiguration"
xmlns:default="http://schemas.microsoft.com/AssignedAccess/2018/StatusConfiguration"
targetNamespace="http://schemas.microsoft.com/AssignedAccess/2018/StatusConfiguration"
>
<xs:simpleType name="status_enabled_t">
<xs:restriction base="xs:string">
<xs:enumeration value="Off"/>
<xs:enumeration value="On"/>
<xs:enumeration value="OnWithAlerts"/>
</xs:restriction>
</xs:simpleType>
<!--below is the definition of the config xml content-->
<xs:element name="StatusConfiguration">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="StatusEnabled" type="status_enabled_t" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
示例:
添加 StatusConfiguration 并将 StatusEnabled 设置为 OnWithAlerts
<SyncML xmlns='SYNCML:SYNCML1.2'> <SyncBody> <Add> <CmdID>2</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/AssignedAccess/StatusConfiguration</LocURI> </Target> <Meta> <Format xmlns="syncml:metinf">chr</Format> </Meta> <Data> <![CDATA[ <?xml version="1.0" encoding="utf-8" ?> <StatusConfiguration xmlns="http://schemas.microsoft.com/AssignedAccess/2018/StatusConfiguration"> <StatusEnabled>OnWithAlerts</StatusEnabled> </StatusConfiguration> ]]> </Data> </Item> </Add> <Final /> </SyncBody> </SyncML>
删除 StatusConfiguration
<SyncML xmlns='SYNCML:SYNCML1.2'> <SyncBody> <Delete> <CmdID>2</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/AssignedAccess/StatusConfiguration</LocURI> </Target> </Item> </Delete> <Final /> </SyncBody> </SyncML>
获取 StatusConfiguration
<SyncML xmlns='SYNCML:SYNCML1.2'> <SyncBody> <Get> <CmdID>2</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/AssignedAccess/StatusConfiguration</LocURI> </Target> </Item> </Get> <Final /> </SyncBody> </SyncML>
将 StatusEnabled 值替换为 On
<SyncML xmlns='SYNCML:SYNCML1.2'> <SyncBody> <Replace> <CmdID>2</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/AssignedAccess/StatusConfiguration</LocURI> </Target> <Meta> <Format xmlns="syncml:metinf">chr</Format> </Meta> <Data> <![CDATA[ <?xml version="1.0" encoding="utf-8" ?> <StatusConfiguration xmlns="http://schemas.microsoft.com/AssignedAccess/2018/StatusConfiguration"> <StatusEnabled>On</StatusEnabled> </StatusConfiguration> ]]> </Data> </Item> </Replace> <Final /> </SyncBody> </SyncML>
AssignedAccessConfiguration XSD
下面是分配的访问权限 XSD 参考文章: 分配的访问权限 XML 架构定义 (XSD) 。
有关分配的访问权限配置文件的实用示例,请参阅 分配的访问权限示例。
在配置中处理 XML
xml 编码 (转义) 和“数据”节点中 XML 的 CDATA 将确保 DM 客户端可以正确解释 SyncML,并将配置 xml 作为字符串 (以原始格式(未转义) )发送到 AssignedAccess CSP 进行处理。
同样,配置 xml 中的 StartLayout xml 使用与字符串相同的格式,即 xml 内部 xml。 在上面提供的示例配置 xml 中,CDATA 用于嵌入 StartLayout xml。 如果使用 CDATA 在 SyncML 中嵌入配置 xml,则你已嵌套 CDATA,因此请注意在提供的 CDATA 示例中如何使用 CDATA。 话虽然这样说,在构造配置 xml 时,MDM 服务器可以转义开始布局 xml 或将 startlayout xml 放入 CDATA 中,当 MDM 服务器将配置 xml 放入 SyncML 中时,MDM 服务器也可以转义它或使用 CDATA 进行包装。
Escape 和 CDATA 是在 xml 中处理 xml 时使用的机制。 请考虑它是将配置 xml 作为有效负载从服务器发送到客户端的传输通道。 它对于配置 CSP 的最终用户和我们的 CSP 都是透明的。 服务器端客户和 CSP 只能看到原始配置 XML。
此示例显示“数据”节点的转义 XML。
<SyncML xmlns='SYNCML:SYNCML1.2'> <SyncBody> <Add> <CmdID>2</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/AssignedAccess/Configuration</LocURI> </Target> <Meta> <Format xmlns="syncml:metinf">chr</Format> </Meta> <Data> <?xml version="1.0" encoding="utf-8" ?> <AssignedAccessConfiguration xmlns="http://schemas.microsoft.com/AssignedAccess/2017/config"> <Profiles> <Profile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}"> <AllAppsList> <AllowedApps> <App DesktopAppPath="C:\Windows\System32\notepad.exe" /> </AllowedApps> </AllAppsList> <StartLayout> <![CDATA[<LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification"> <LayoutOptions StartTileGroupCellWidth="6" /> <DefaultLayoutOverride> <StartLayoutCollection> <defaultlayout:StartLayout GroupCellWidth="6"> <start:Group Name="Group1"> <start:Tile Size="4x4" Column="0" Row="0" AppUserModelID="Microsoft.ZuneMusic_8wekyb3d8bbwe!Microsoft.ZuneMusic" /> </start:Group> </defaultlayout:StartLayout> </StartLayoutCollection> </DefaultLayoutOverride> </LayoutModificationTemplate> ]]> </StartLayout> <Taskbar ShowTaskbar="true"/> </Profile> </Profiles> <Configs> <Config> <Account>MultiAppKioskUser</Account> <DefaultProfile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}"/> </Config> </Configs> </AssignedAccessConfiguration> </Data> </Item> </Add> <Final /> </SyncBody> </SyncML>
此示例显示 XML 的 CData。
<SyncML xmlns='SYNCML:SYNCML1.2'> <SyncBody> <Add> <CmdID>2</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/AssignedAccess/Configuration</LocURI> </Target> <Meta> <Format xmlns="syncml:metinf">chr</Format> </Meta> <Data> <![CDATA[<?xml version="1.0" encoding="utf-8" ?> <AssignedAccessConfiguration xmlns="http://schemas.microsoft.com/AssignedAccess/2017/config"> <Profiles> <Profile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}"> <AllAppsList> <AllowedApps> <App DesktopAppPath="C:\Windows\System32\notepad.exe" /> </AllowedApps> </AllAppsList> <StartLayout> <![CDATA[<LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification"> <LayoutOptions StartTileGroupCellWidth="6" /> <DefaultLayoutOverride> <StartLayoutCollection> <defaultlayout:StartLayout GroupCellWidth="6"> <start:Group Name="Group1"> <start:Tile Size="4x4" Column="0" Row="0" AppUserModelID="Microsoft.ZuneMusic_8wekyb3d8bbwe!Microsoft.ZuneMusic" /> </start:Group> <start:Group Name="Group2"> <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationID="{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\mspaint.exe" /> <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationID="{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\notepad.exe" /> </start:Group> </defaultlayout:StartLayout> </StartLayoutCollection> </DefaultLayoutOverride> </LayoutModificationTemplate> ]]]]><![CDATA[> </StartLayout> <Taskbar ShowTaskbar="true"/> </Profile> </Profiles> <Configs> <Config> <Account>MultiAppKioskUser</Account> <DefaultProfile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}"/> </Config> </Configs> </AssignedAccessConfiguration> ]]> </Data> </Item> </Add> <Final /> </SyncBody> </SyncML>