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 上的一些经验心得!

troubleshooting

HOWTO: 解决Windows搜索索引性能和容量问题

        当 Windows 搜索性能较差或发现磁盘空间正被索引数据库吞噬时就需要进行相关的优化。通常索引性能受其项目数量和总体大小因素影响。当索引超过40万个项目时,我们便可能觉察到性能问题,它将直接体现在CPU、内存或磁盘利用率上。此外,Windows 搜索还会为 Outlook 邮箱生成索引,如果邮箱包含了超过6万个项目时,索引的性能也可能会降低。

searchindex-1

        在容量方面,随着索引数量的增长,不管这些项目的大小如何,索引数据库都会大幅增长。当然项目本身的大小也会影响数据库的大小。索引数据库的文件名为“Windows.edb”,该文件位于“%programdata%\Microsoft\Search\Data\Applications\Windows”下,若要检查该数据库的容量不能仅从文件大小来看,而是要进入其文件属性查看“占用空间”来检查其实际占用的磁盘空间。

searchindex-2

searchindex-3

        如我们所见,当索引数量和容量这两个因素加在一起时,会使索引问题复杂化。优化的方式有一些,下来我们来看看如何对 Windows 索引进行调优。

        首先,最简单直(Cu)接(Bao)的方法是重建索引。相当于复位了索引数据库,能解决不少问题,但带来的不利因素是重建时所消耗的时间和资源,并且随着时间的推荐,我们的索引依旧会重现数量和容量问题。

searchindex-4

        第二种方法,为搜索索引排除文件夹,可以打开 Windows 11 的设置应用,定位至“隐私和安全性”,使用“添加要排除的文件夹”按钮来添加。对于 Windows 10 系统可以在设置的搜索框中键入“搜索”或“排除”查找。

searchindex-5

        第三种方法,更改索引处理特定文件类型的方式。我们可以打开“索引选项”,在“高级选项”下的“文件类型”选项卡内进行配置。

searchindex-6

        第四种方法,在讲之前我们先了解一个特性!自 Windows 8 开始至 Windows 10/11 索引数据库合并了文件属性和持久索引两类数据,并且会索引整个文件,这种设计是为了提高搜索的召回率和索引以及查询的性能,即全面/综合索引法,这种方法虽然提高了搜索和查询的效率和准确性,但问题也很显而易见,尤其是在小容量固态硬盘普及时期,或小容量系统卷时,大家总会发现硬盘可用容量在不断被吞噬。

        而在 Windows 7 时代,索引数据库只包含了文件属性,而持久索引则单独存储在一个扩展名为 .ci 的文件中,并且对于大型文件也只会对前部分进行索引,所以 Windows 7 的索引数据库要小很多,但其缺点也显而易见。由于文件属性和持久性索引数据存储在不同的文件中,因此可能会导致索引数据的不一致性和丢失(这就是为什么 Windows 7 时代搜索故障/问题在 IT HelpDesk 居高不下的原因);对于大型文件,由于只索引了文件的前部分,这极大增加了搜索结果的不完整和不准确性;如果需要进行全文搜索的文件类型(TXT),其索引速度会慢很多,因为它需要访问 .ci 文件中的持久性索引数据。

        全面/综合索引和分离式索引的数据存储方式各自都有一些弊端,但考虑到实际效率,且计算性能的提升以及固态存储成本的降低,前者更适应我们现实需求。

        另外,还有一个问题不容忽视,Outlook 的邮箱数据文件!通常我们仅会缓存一年或者半年的邮件,此时并不会遇到很严重的容量问题。但是如果客户端将 Outlook 配置为使用 PST 文件,并且下载了所有数据,那么在 Windows 10/11 平台上,由于前面所描述的特性因素,会发现 Windows.edb 的文件容量非常之大。此时 IT 人员就需要考虑为客户端减少索引范围,然后重新生成索引来缓解。或者使用第四种方法 - 对索引数据库进行碎片整理,为此执行如下命令行。

sc config wsearch start=disabled

net stop wsearch

esentutl.exe /d %programdata%\Microsoft\Search\Data\Applications\windows.edb

sc config wsearch start=delayed-auto

net start wsearch

        OK,今天的分享就到这里!如果您在应用和部署 Windows 时遇到什么问题欢迎与我联系交流。

logo_intune

一些值得关注的 Windows Autopilot 新增功能

        在微软最近发布的一篇文档中“Windows Autopilot 新增功能 | Microsoft Learn”我们需要留意到一些重要的信息,它将有助于我们顺畅成功地实施 Windows Autopilot。

1. One step removal of Windows Autopilot registration

        从 Intune 2307 版(可在 Intune 租户信息中确认当前版本),Windows Autopilot 过程中将添加删除设备注册的步骤,而无需事先通过 Intune Portal 进行操作。

        这个功能看起来比较难以理解,其实主要用于解决已经执行了预预配和自部署的那些设备重新执行部署配置文件的问题。总之,在 gOxiA 看来,我们无需过度论证,它主要是改进了部署的成功率。


2. Device rename occurs during technician phase for pre-provisioning

        从 Intune 2303 版开始,强制在 Pre-provisioning mode 的技术人员阶段进行设备重命名,以便为 AAD 联接设备进行预预配。这一改进,将设备重命名从用户阶段跳过。但需要 Windows 10 安装了 KB5023773,Windows 11 安装了 KB5023778 质量更新。


3. Install required apps during pre-provisioning

        ESP(注册状态页)配置文件中新增加了一个选项,允许我们选择是否在Pre-provosioning阶段尝试安装所需的应用程序。理解其实还是比较困难的,在配置阶段我们可以设置在安装完所有应用和配置文件之前,避免用户使用设备。并且在发生错误后,可选重置或继续使用设备。此外,“如果已将所需应用分配给用户/设备,需要在安装完毕前阻止设备使用”,该选项默认是全部,但他们如果安装失败,则ESP将继续,并在用户登录时重试该应用。但现在,“如果已将所需应用分配给用户/设备,需要在安装完毕前阻止设备使用”,这个选项下多了一个“仅在技术人员阶段中失败的所选阻止应用”,如果选择“是”那些指定的应用必须被成功安装,否则部署失败。

esp-blockapp


4. New Microsoft Store apps now supported with the Enrollment Status Page

        从2303开始ESP阶段将支持 Microsoft Store App(New),这个比较容易理解,由于 Microsoft Store for Business 停用,阻止 IT 如果要部署应用商店内的应用都相继转至“Microsoft Store App(New)”,但之前在ESP阶段这些App并不会被安装比如进入到桌面后才会开始,而现在则完全不同。参考:“HOWTO: 在 Intune 中使用 Microsoft Store App(New) 添加应用


5. Update to the Windows Autopilot sign-in experience

        用户现在必须在注册期间初始登录时输入其凭据。将不再允许预先填充 AAD 的 UPN。这个更新到时有意思,记得早前很多用户喜欢减少 UPN 的输入,可能是现在考虑到安全隐私合规因素,又不再支持了。


6. Windows Autopilot diagnostics page

        在使用 Windows Autopilot 部署 Windows 11 时,如果遇到错误,用户可以查看有关其详细故障排除信息。提供了新的诊断页面,非常友好的视图来方便我们排除故障,同时也可导出日志进行分析。

autopilot-diagnosticspage


本次分享就到这里,其中主要包含了 gOxiA 关注的信息,若要了解详细的内容还请移步:“Windows Autopilot 新增功能 | Microsoft Learn

分页: 8/469 第一页 上页 3 4 5 6 7 8 9 10 11 12 下页 最后页 [ 显示模式: 摘要 | 列表 ]