创建 Shell 启动器配置文件

若要配置 Shell 启动器,必须创建配置 XML 文件并将其应用于设备。 配置文件必须符合 架构,如 Shell Launcher XML 架构定义 (XSD) 中定义。

本文介绍如何配置 Shell 启动器配置文件,包括实际示例。

让我们首先看看 XML 文件的基本结构。 Shell 启动器配置文件包含:

  • 一个或多个 profiles。 每个 profile 定义:
    • 替换标准 Windows shell (Explorer.exe) 的应用程序,该应用程序在用户登录时执行
    • 应用程序退出时要执行的默认操作,以及应用程序退出时使用特定返回代码执行的操作
  • 一个或多个 configs。 每个 config 将用户帐户关联到 profile

注意

如果配置文件未关联到用户帐户,则它不起作用。

下面是 Shell 启动器配置文件的基本示例,其中包含一个配置文件和一个配置:

<?xml version="1.0" encoding="utf-8" ?>
<ShellLauncherConfiguration
  xmlns="http://schemas.microsoft.com/ShellLauncher/2018/Configuration"
  xmlns:V2="http://schemas.microsoft.com/ShellLauncher/2019/Configuration">
  <Profiles>
    <Profile Id="{GUID}">
      <!-- Add configuration here as needed -->
    </Profile>
  </Profiles>
  <Configs>
    <Config>
      <!-- Add configuration here as needed -->
    </Config>
  </Configs>
</ShellLauncherConfiguration>

版本控制

Shell 启动器配置 XML 是版本控制。 版本在 XML 根元素中定义,用于确定用于验证 XML 文件的架构。 版本还用于确定哪些功能可用于配置。 下面是文档示例中使用的版本、别名和命名空间的表:

版本 Alias 命名空间
Windows 10 V2 http://schemas.microsoft.com/ShellLauncher/2019/Configuration
Windows 10 默认 http://schemas.microsoft.com/ShellLauncher/2018/Configuration

若要授权包含特定于版本的元素和属性的兼容配置 XML,请始终包含加载项架构的命名空间,并使用命名空间别名相应地修饰属性和元素。 例如,若要将展台应用程序配置为全屏执行,请使用以下示例。 请注意与命名空间关联的http://schemas.microsoft.com/ShellLauncher/2019/Configuration别名V2,该别名在 和 AllAppsFullScreen 属性上AppType内联标记。

<?xml version="1.0" encoding="utf-8" ?>
<ShellLauncherConfiguration
  xmlns="http://schemas.microsoft.com/ShellLauncher/2018/Configuration"
  xmlns:V2="http://schemas.microsoft.com/ShellLauncher/2019/Configuration">
  <Profiles>
    <Profile Id="{GUID}">
      <!-- Add configuration here as needed -->
      <Shell Shell="%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge.exe" V2:AppType="Desktop" V2:AllAppsFullScreen="true">
    </Profile>
  </Profiles>
  <Configs>
    <Config>
      <!-- Add configuration here as needed -->
    </Config>
  </Configs>
</ShellLauncherConfiguration>

可在此处找到 shell Launcher XML 架构定义 (XSD)

配置文件

配置文件可以包含一个或多个配置文件。 每个配置文件都有一个唯一标识符 Profile Id 和 (可选)一个 Name。 例如:

<Profiles>
  <Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}" Name="Microsoft Learn example">
    <!-- Add configuration here as needed -->
  </Profile>
</Profiles>

提示

Profile Id XML 文件中必须是唯一的。 可以使用 PowerShell cmdlet New-Guid生成 GUID。

可以定义在没有 Defaultprofile 其他配置文件与用户帐户关联时使用的 。 这可确保使用设备的每个用户都使用相同的应用程序。 示例:

<Profiles>
  <DefaultProfile>
    <!-- Add configuration here as needed -->
  </DefaultProfile>
</Profiles>

Shell

每个配置文件定义一个 Shell 元素,其中包含有关要执行的应用程序的详细信息。 元素 Shell 具有以下属性:

属性 说明 详细信息
Shell 用作 Windows shell 的应用程序。 - 对于通用 Windows 平台 (UWP) 应用,你必须提供应用用户模型 ID (AUMID) 。 了解如何 查找已安装应用的应用程序用户模型 ID
- 对于桌面应用,请指定可执行文件的完整路径,它可以以 的形式 %variableName%包含系统环境变量。 还可以指定应用可能需要的任何参数。
V2:AppType 定义应用程序的类型。 允许的值为 DesktopUWP
V2:AllAppsFullScreen 定义是否以全屏方式执行所有应用程序的布尔值。 - 设置为 true时,Shell 启动器以全屏方式运行每个应用,或最大化桌面应用。
- 设置为 或不设置为 时 false ,只有自定义 shell 应用在全屏模式下运行;用户启动的其他应用在窗口模式下运行。

示例:

<Profile Id="{GUID}">
  <Shell Shell="" V2:AppType="" V2:AllAppsFullScreen="">
    <!-- Add configuration here as needed -->
  </Shell>
</Profile>

在下一个示例中,“天气”应用以全屏方式执行。

<?xml version="1.0" encoding="utf-8"?>
<ShellLauncherConfiguration xmlns="http://schemas.microsoft.com/ShellLauncher/2018/Configuration"
xmlns:V2="http://schemas.microsoft.com/ShellLauncher/2019/Configuration">
  <Profiles>
    <DefaultProfile>
      <Shell Shell="Microsoft.BingWeather_8wekyb3d8bbwe!App" V2:AppType="UWP">
        <DefaultAction Action="RestartShell"/>
      </Shell>
    </DefaultProfile>
  </Profiles>
  <Configs/>
</ShellLauncherConfiguration>

在下一个示例中,Microsoft Edge 以全屏方式执行,打开网站。 网站在处于非活动状态 2 分钟后重新加载。

<Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}">
    <Shell Shell="%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge.exe --kiosk https://www.contoso.com --edge-kiosk-type=fullscreen --kiosk-idle-timeout-minutes=2" V2:AppType="Desktop" V2:AllAppsFullScreen="true">
        <DefaultAction Action="RestartShell"/>
    </Shell>
</Profile>

ReturnCodeActions

Shell 启动器定义四个操作来处理应用退出。 可以自定义 Shell 启动器,并根据不同的退出代码使用操作。 下面是 ReturnCodeActions 枚举:

  • RestartShell
  • RestartDevice
  • ShutdownDevice
  • DoNothing

这些操作可用作默认操作,也可以映射到特定的退出代码。 请参阅 Shell 启动器 ,了解如何将退出代码与 Shell 启动器 WMI 配合使用。

最多可以指定四个映射到四个退出代码的自定义操作,并为所有其他退出代码指定一个默认操作。 当应用退出时,如果在自定义操作映射中找不到退出代码,或者没有定义默认操作,则不会发生任何操作。 因此,至少应定义 DefaultAction

示例:

<Profile Id="{GUID}">
  <Shell Shell="" V2:AppType="" V2:AllAppsFullScreen="">
    <ReturnCodeActions>
      <ReturnCodeAction ReturnCode="0" Action="RestartShell"/>
      <ReturnCodeAction ReturnCode="-1" Action="RestartDevice"/>
      <ReturnCodeAction ReturnCode="255" Action="ShutdownDevice"/>
      <ReturnCodeAction ReturnCode="1" Action="DoNothing"/>
    </ReturnCodeActions>
    <DefaultAction Action="RestartDevice"/>
  </Shell>
</Profile>

配置

在 下 Configs,定义一个或多个用户帐户及其与配置文件的关联。

使用 <Account Name=""/>指定单个帐户。

重要提示

在应用 Shell 启动器配置之前,请确保指定的用户帐户在设备上可用,否则会失败。

对于域和Microsoft Entra 帐户,只要设备已加入 Active Directory 或 Microsoft Entra 联接,就可以在设备加入的域林或租户中发现该帐户。 对于本地帐户,在为 Shell 启动器配置帐户之前,需要该帐户存在。

本地用户

本地帐户可以输入为 devicename\user.\user或仅 user

<Config>
  <Account Name="Learn Example"/>
  <Profile Id="{GUID}"/>
</Config>

Active Directory 用户

必须使用格式 domain\samAccountName输入域帐户。

<Config>
  <Account Name="contoso\user"/>
  <Profile Id="{GUID}"/>
</Config>

Microsoft Entra 用户

Microsoft必须使用格式指定 Entra 帐户: AzureAD\{UPN}AzureAD 必须 按原样提供,然后使用Microsoft Entra 用户主体名称 (UPN) 。

<Config>
  <Account Name="azuread\user@contoso.onmicrosoft.com"/>
  <Profile Id="{GUID}"/>
</Config>

用户帐户登录时,将应用关联的 Shell 启动器配置文件,加载配置文件中指定的应用程序。

自动登录帐户

使用 <AutoLogonAccount>,Shell 启动器创建和管理用户帐户,以在设备重启后自动登录。 该帐户是名为 的 Kiosk本地标准用户。

示例:

<Configs>
  <Config>
    <!--account managed by Shell Launcher-->
    <AutoLogonAccount/>
    <Profile Id="{GUID}"/>
  </Config>
  <Configs>
    <!--local account-->
    <Account Name="Learn Example"/>
    <Profile ID="{GUID}"/>
  </Configs>
  <Configs>
    <!--Microsoft Entra account-->
    <Account Name="azuread\kiosk@contoso.com"/>
    <Profile ID="{GUID}"/>
  </Configs>
</Configs>

示例

下面是 Shell 启动器配置文件的完整示例,其中包含两个配置文件和三个配置:

<?xml version="1.0" encoding="utf-8"?>
<ShellLauncherConfiguration xmlns="http://schemas.microsoft.com/ShellLauncher/2018/Configuration" xmlns:V2="http://schemas.microsoft.com/ShellLauncher/2019/Configuration">
  <Profiles>
    <DefaultProfile>
      <Shell Shell="%SystemRoot%\explorer.exe" />
    </DefaultProfile>
    <Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F79}" Name="Weather">
      <Shell Shell="Microsoft.BingWeather_8wekyb3d8bbwe!App" V2:AppType="UWP">
        <DefaultAction Action="RestartShell" />
      </Shell>
    </Profile>
    <Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}" Name="Edge">
      <Shell Shell="%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge.exe --kiosk https://www.contoso.com --edge-kiosk-type=fullscreen --kiosk-idle-timeout-minutes=2" V2:AppType="Desktop" V2:AllAppsFullScreen="true">
        <ReturnCodeActions>
          <ReturnCodeAction ReturnCode="0" Action="RestartShell" />
          <ReturnCodeAction ReturnCode="-1" Action="RestartDevice" />
          <ReturnCodeAction ReturnCode="255" Action="ShutdownDevice" />
        </ReturnCodeActions>
        <DefaultAction Action="RestartShell" />
      </Shell>
    </Profile>
  </Profiles>
  <Configs>
    <Config>
      <AutoLogonAccount />
      <Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}" />
    </Config>
    <Config>
      <Account Name="azuread\kiosk1@contoso.onmicrosoft.com" />
      <Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F79}" />
    </Config>
    <Config>
      <Account Name="azuread\kiosk2@contoso.onmicrosoft.com" />
      <Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}" />
    </Config>
  </Configs>
</ShellLauncherConfiguration>