HOWTO: 应用 Windows 10 开始屏幕和任务栏的自定义布局文件

        近两年企业部署 Windows 10 的节奏正在加快,更多的中国企业开始使用 Windows 10,而 Windows 桌面标准化的需求及遇到的问题也越发突出。其中关于定制 Windows 10 开始屏幕和任务栏成为了主要的话题。早期便开始实施的 IT 人员知道,在 1607 版时还可以通过定制用户开始屏幕和任务栏,然后利用 Unattend 中的 CopyProfile 来统一个性化设置。但随着微软政策的不断变更,使定制开始屏幕和任务栏就像“迷一般的存在”。

        gOxiA 翻阅了大量的资料,进行了深入的学习和分析。个人总结是微软在基于定制映像交付(面向OEM)时,对开始屏幕和任务栏的定制是有严格限制的。因为定制开始屏幕和任务栏时通常会添加第三方应用,而微软则有相关的条款进行约束,具体可参考《Windows 应用商店 OEM 计划指南》。所以呢,企业用户要统一定制开始屏幕和任务栏,则需要通过域组策略(GPO)或 CSP 方式,这也是微软所推荐的管理方式。

        如果作为企业 IT 人员的你,非要基于定制映像交付,那么你需要考虑的问题就会非常的广泛,而此时提到的问题当然不是条款,更多的是易于忽略的相关技术细节,这一过程不是一朝一夕,是需要付出学习成本的。

        我们要了解一些重点!首先,定制开始屏幕和任务栏会涉及两种资源:传统 Windows 桌面应用(ClassicApps)和现代应用(UWPApps)也称为通用Windows应用。其次,会在两个位置进行定制:开始屏幕和任务栏。最后,涉及的应用程序如何部署:预先安装和交付之后安装。

        目前可确认的信息是,如果部署的是新版 Windows 10,要基于映像定制开始屏幕,则需要通过一个有严格格式规范要求的 XML 遵循指定的应用方式进行定制(PS:介于篇幅,本次分享不包含这个 XML 格式的内容),CopyProfile 将不再有效。此外,虽然目前 Unattend 中还提供向任务栏添加快捷方式的组件设置,但微软将会放弃此项支持。因为任务栏的定制可能会包含 UWPApps,必须通过特定的 XML 进行定制。

        不知道上面的描述是否能够完全理解,没关系我们可以动手实践。前面提到过定制文件的应用方式非常之重要,所以今天要分享的主要内容就是基于映像定制的三种方式。在开始前我们需要先准备一个开始屏幕的定制文件,为了避免出错我们可以先在 Windows 10 参考环境下定制好开始屏幕,然后使用 PowerShell 的 export-startlayout 导出开始屏幕布局文件,我们会基于这个布局文件进行修改或应用。导出开始布局文件的命令行参考如下:

export-startlayout –path d:\startlayout.xml

export-startlayout

一. 为脱机映像应用布局文件

        为脱机映像应用布局文件,此案例下假设 IT 人员已经预先安装好了应用程序,在 Sysprep 后关机,然后为这个脱机映像应用布局文件。即,将你的布局文件重新命名为“LayoutModification.xml”并复制到脱机映像的指定目录下,如:

c:\mount\windows\users\default\appdata\local\microsoft\windows\shell\layoutmodification.xml

        要点:布局文件中引用的 ClassicApps 路径应位于 %AppData% 或 %ALLUsersProfile% 的“程序”目录下,建议将“.lnk”拷贝到后者下。如果映像中未预先安装引用的 ClassicApps,则应使用“DesktopApplicationID”来引用这些应用程序,涉及的 AppID 可参考 gOxiA 的前一篇文章“HOWTO: 获取 Windows 10 应用程序的名称和AppID ”。

二. 通过 oobe 阶段导入布局文件

        利用 Unattend 在 oobeSystem 阶段的 FirstLogonCommands 添加 PowerShell 命令行,以导入布局文件,是 gOxiA 在用,也推荐大家应用的方式,能够正确配置所有用户使用统一的开始屏幕和任务栏布局,但对布局文件的修改要求比较高,需要将开始屏幕和任务栏布局整合在一个 XML 文件中,并加入其他的布局定义,以后会与大家分享。

        涉及的 PowerShell 命令行参考如下:

powershell -command import-startlayout -layoutpath c:\windows\startlayout.xml -mountpath c:\

oobesystem_firstlogoncommands

三. 在 Sysprep 前应用任务栏布局文件

        这个方式其实仅针对需要自定义任务栏的场景。因为前面提过在定制任务栏时可能会添加 UWPApps,而通过 XML 是目前唯一可行的方式。但是此方式限制较多,只能额外向任务栏添加最多三个固定的应用程序,且不能替换系统默认布局。

        首先,需要创建一个专用于任务栏布局的 XML 文件,可参考:https://github.com/goxia/ITSM/blob/master/TaskbarLayoutModification.xml,并拷贝至下面命令行中的路径。

        然后,在审计模式下执行如下命令行以修改注册表配置,然后在执行 Sysprep 进行封装并重新捕获映像。这是因为此设置必须在 specialize 阶段前就应用在注册表中。

cmd /c reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer /v LayoutXMLPath /d C:\Windows\Fabrikam\TaskbarLayoutModification.xml

        要点: XML 的文件名和存放路径没有约束;ClassicApps 的 .lnk 建议位于 %ALLUSERSPROFILE% 的开始程序目录下(%ALLUSERPROFILE%\Microsoft\Windows\Start Menu\Programs\);UWPApps 应使用“AppUserModelID”进行指定。

HOWTO: 获取 Windows 10 应用程序的名称和AppID

        今天 gOxiA 要与大家分享的内容是通过 PowerShell 命令行获取 Windows 10 应用程序的名称和 AppID。这里的 Windows 10 应用程序除了“现代”应用程序外,也包含传统的桌面应用程序;而应用程序名称则是指安装的程序在 Windows 10 上所显示给用户的“友好”名称;AppID 即是 AppUserModelID – 应用程序用户模型ID(自 Windows 7 开始在任务栏中广泛使用,它类似早期的应用程序快捷方式,将进程、文件和窗口与特定应用程序相关联,但更高级)。

        要获取 Windows 10 应用程序的名称和 AppID,可使用 PowerShell 内置的命令 - GET-StartApps,具体执行后的结果如下所示。

Get-StartApps

        那么为什么我们需要获取这些数据呢?!前面提到过 AppID 类似 应用程序快捷方式(.lnk),AppID 可用于将应用程序固定到任务栏或 Windows 开始屏幕,尤其是在编写 “LayoutModification.xml”,以定制 Windows 10 的开始屏幕和任务栏。通常为了确保 Start layout XML 解析器能够正确处理文件,我们都会使用 Export-StartLayout cmdlet 来导出当前 Windows 用户环境的开始屏幕布局,再进行后续的修改和应用。但是需要注意的是,如果 IT 组织计划使用组策略或MDM应用开始布局,并且是在用户首次登录后安装了应用程序,则应使用 DesktopApplicationID 而不是 DesktopApplicationLinkPath。其中 DesktopApplicationID 就需要我们事先使用 Get-StartApps 来获取 AppID。否则,就需要事先将 lnk 文件部署到旧的开始菜单目录中。如:

  • %APPDATA%\Microsoft\Windows\Start Menu\Programs
  • %ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs


参考资料:Start layout XML for desktop editions of Windows 10 (reference)

HOWTO: 关闭 Windows 10 任务栏上的人脉图标

        Windows 10 现在支持在任务栏上显示人脉图标,可方便、快速地访问联系人,同时也可以将常用联系人直接固定在任务栏上。但是在一些企业 IT 环境下,可能并不需要这个功能,那么该如何关闭它呢?!

PeopleBand-1

        使用手动方式关闭任务栏人脉就不再详述,可参考下图参考操作。

PeopleBand-2

        而本例中主要介绍使用组策略和注册表,对任务栏人脉图标进行统一管理或自动化配置。如果要使用组策略(GPO)统一管理,需在“用户配置/管理模板/开始菜单和任务栏”下找到“从任务栏中删除人脉栏”,并将其设置为“已禁用”。

DisablePeopleBand_gpo

        如果计划使用脚本或 Unattend 应答文件,进行自动化配置,可利用修改注册表来实现,具体的命令行参考如下:

reg add \"HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People\" /v PEOPLEBAND /t REG_DWORD /d 0 /f

        注意:由于 PEOPLEBAND 位于 HKCU 分支下,所以当应用在 Unattend 环境下时,请在 “OobeSystem” 阶段执行。

分页: 31/147 第一页 上页 26 27 28 29 30 31 32 33 34 35 下页 最后页 [ 显示模式: 摘要 | 列表 ]