Multi-app Kiosk for Windows 11 - 入门

[ 2023/07/23 12:31 | by gOxiA ]
| |

Windows_logo_horiz_blue_rgb

  

Multi-app Kiosk for Windows 11 - 入门

  

        一些 Windows 设备可能会被用在单一用途的特殊场景中,例如门店中用于查看商品目录的电脑,或点菜系统;也可能是医疗或工厂中的一线手持终端;又或是学校的图书馆查询电脑或在线考试用途的电脑。它们都需要设备系统被限制在某个应用或多个应用模式下,而不允许访问电脑上的其他程序、设置、目录。

  

        早期,IT人员需要手动进行颗粒化的配置,或借助第三方的解决方案。而后 Windows 逐步推出展台/数字标牌和共享电脑的功能模式,可以轻松的实现我们的需求。要了解 Windows Kiosk Mode 不妨先移步官方文档了解学习 - “在 Windows 桌面版中配置站台和数字签名”。

  

        在 Windows 10 的 Kiosk Mode 中,除了支持单应用模式外还支持多应用模式,这样我们可以定制开始菜单显示可以被运行的程序。此外,这些应用还被分为 UWP 和 Win32 应用,它受 Windows SKU 的限制,具体可了解 - “设置单应用站台”。

  

        在 Windows 11 的早期版本中仅支持单应用的 Kiosk Mode,自 2023年5月24日发布的 Windows configuration updates 提供了对 Multi-app Kiosk mode 的支持。下图是 gOxiA 实践的结果,将被允许的应用(UWP和Win32)固定在了 Windows 11 的开始菜单中,并且会自动运行一个应用(实时字幕)。

  

Multi-app_Kiosk_W11

  

        可现在我们暂时还无法使用 MDM 或 PPKG 进行配置,而只能使用 MDM Bridge WMI Provider 来实现。这个过程对于刚刚上手的朋友来说可能是一场“噩梦”!因为当发生错误的时候,我们没有更多的参考文档可用于排错,完全依靠不断的尝试来摸索。当然官方文档也提供了“展台模式问题疑难解答”,其中最为有价值的当属事件日志了,gOxiA 在目前的排错中主要依赖 “Microsoft\Windows\AssignedAccess\Operational” 事件日志。例如我们导入了一个 XML 配置,他发生了错误,在 PowerShell 中其实根本看不出报错的主要内容,此时就需要通过事件日志来排查,每一个报错会生成两条事件,请重点查阅两条中的前一个,因为会记录相对详细的提示。如下所示:

  

kiosk-error

  

Kiosk_event-1

  

kiosk_event-2

  

        OK,通过以上的了解如果你打算开始上手,那么就跟随 gOxiA 一起往下走。首先请准备一台 Windows 11 虚拟机,并安装好相应的 LCU,在 Kiosk mode 中建议分配一个普通权限的账号,创建好检查点以便在不断发生错误的时候能迅速返回上一个正常状态。

  

        要通过 MDM Bridge WMI Provider 配置 Windows 11 的 Multi-app Kiosk 还需要准备一个工具 – PSExec ,因为我们需要利用它启用 PowerShell 才能正常的执行后面的命令行,否则将会出现如下的报错提示。要通过 PSExec 启动 PowerShell 请执行 “psexec64.exe -accepteula -i -d -s cmd”,然后在打开的 CMD 中启动 PowerShell。

  

kiosk-error-nonpsexec

  

        此外,在配置 XML 时我们会涉及到 UWP 应用的 AUMID,可以执行 PowerShell 的 “get-startapps” 获取,当然也可以参考官方文档 - “查找已安装应用的 AUMID”中的其他几个方法。

  

        准备就绪,执行以下脚本加载 XML 配置,便可实现 Windows 11 的 Multi-app Mode。

  

$namespacename=\"root\cimv2\mdm\dmmap\"

  

$classname=\"mdm_assignedaccess\"

  

$obj=get-ciminstance -namespace $namespacename -classname $classname

  

add-type -assemblyname system.web

  

$obj.Configuration=[system.web.httputility]::HtmlEncode(@\"

  

        接下来输入官方文档给出的 XML 配置,最后以“"@)”结束输入,再执行 “set-ciminstance -ciminstance $obj” 完成。

  

<?xml version="1.0" encoding="utf-8" ?>        
< AssignedAccessConfiguration 
  xmlns="
http://schemas.microsoft.com/AssignedAccess/2017/config" xmlns:win11="http://schemas.microsoft.com/AssignedAccess/2022/config">        
  <Profiles>        
    <Profile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}">      
      <AllAppsList>        
        <AllowedApps>        
          <App AppUserModelId="Microsoft.ZuneMusic_8wekyb3d8bbwe!Microsoft.ZuneMusic" />        
          <App AppUserModelId="Microsoft.ZuneVideo_8wekyb3d8bbwe!Microsoft.ZuneVideo" />        
           <App AppUserModelId="Microsoft.Windows.Photos_8wekyb3d8bbwe!App" />        
          <App AppUserModelId="Microsoft.BingWeather_8wekyb3d8bbwe!App" />        
          <App AppUserModelId="Microsoft.WindowsCalculator_8wekyb3d8bbwe!App" />        
          <App DesktopAppPath="%windir%system32mspaint.exe" />        
          <App DesktopAppPath="C:WindowsSystem32notepad.exe" />        
        </AllowedApps>        
      </AllAppsList>        
      <win11:StartPins>        
         <![CDATA[ 
          { "pinnedList":[        
            {"packagedAppId":"Microsoft.WindowsCalculator_8wekyb3d8bbwe!App"},        
             {"packagedAppId":"Microsoft.Windows.Photos_8wekyb3d8bbwe!App"},        
            {"packagedAppId":"Microsoft.ZuneMusic_8wekyb3d8bbwe!Microsoft.ZuneMusic"},        
            {"packagedAppId":"Microsoft.ZuneVideo_8wekyb3d8bbwe!Microsoft.ZuneVideo"},        
             {"packagedAppId":"Microsoft.BingWeather_8wekyb3d8bbwe!App"},        
            {"desktopAppLink":"%ALLUSERSPROFILE%\Microsoft\Windows\StartMenu\Programs\Accessories\Paint.lnk"},        
             {"desktopAppLink":"%APPDATA%\Microsoft\Windows\StartMenu\Programs\Accessories\Notepad.lnk"}        
          ] }        
        ]]>        
      </win11:StartPins>        
      <Taskbar ShowTaskbar="true"/>        
    </Profile>        
  </Profiles>        
  <Configs>        
    <Config>        
      < Account>MultiAppKioskUser</Account>        
      <DefaultProfile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}"/>        
    </Config>        
  </Configs>        
</AssignedAccessConfiguration>

  

        上述详细的过程可参考 “为 Windows 11 设置多应用展台”。gOxiA 也会继续分享 Multi-app Kiosk 在 Windows 11 上的一些经验心得!

Windows Client | 评论(0) | 引用(0) | 阅读(4424)
发表评论
昵称 [注册]
密码 游客无需密码
网址
电邮
打开HTML 打开UBB 打开表情 隐藏 记住我