<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[gOxiA=苏繁=SuFan Blog]]></title> 
<link>https://maytide.net/index.php</link> 
<description><![CDATA[gOxiA,苏繁,sufan,Microsoft MVP]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[gOxiA=苏繁=SuFan Blog]]></copyright>
<item>
<link>https://maytide.net/read.php/1901.htm</link>
<title><![CDATA[HOWTO: 应用 Windows 10 开始屏幕和任务栏的自定义布局文件]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Windows Client]]></category>
<pubDate>Thu, 23 Aug 2018 08:52:19 +0000</pubDate> 
<guid>https://maytide.net/read.php/1901.htm</guid> 
<description>
<![CDATA[ 
	<p><a href="http://goxia.maytide.net/ftpupfiles/897c5f6f7a19_E4B6/windows-10-508x192-logo_3.png"><img alt="" src="http://goxia.maytide.net/attachment.php?fid=49" border="0"></a></p><p><font color="#fd3f0d" size="4"><strong>HOWTO: 应用 Windows 10 开始屏幕和任务栏的自定义布局文件</strong></font></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 近两年企业部署 Windows 10 的节奏正在加快，更多的中国企业开始使用 Windows 10，而 Windows 桌面标准化的需求及遇到的问题也越发突出。其中关于定制 Windows 10 开始屏幕和任务栏成为了主要的话题。早期便开始实施的 IT 人员知道，在 1607 版时还可以通过定制用户开始屏幕和任务栏，然后利用 Unattend 中的 CopyProfile 来统一个性化设置。但随着微软政策的不断变更，使定制开始屏幕和任务栏就像“迷一般的存在”。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://goxia.maytide.net" target="_blank">gOxiA</a> 翻阅了大量的资料，进行了深入的学习和分析。个人总结是微软在基于定制映像交付（面向OEM）时，对开始屏幕和任务栏的定制是有严格限制的。因为定制开始屏幕和任务栏时通常会添加第三方应用，而微软则有相关的条款进行约束，具体可参考《<a href="https://myoem.microsoft.com/oem/myoem/en/topics/Licensing/roylicres/ost2016/Pages/DP-WindowsStoreOEMProgramGuide2016FinalCL.aspx" target="_blank">Windows 应用商店 OEM 计划指南</a>》。所以呢，企业用户要统一定制开始屏幕和任务栏，则需要通过域组策略（GPO）或 CSP 方式，这也是微软所推荐的管理方式。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果作为企业 IT 人员的你，非要基于定制映像交付，那么你需要考虑的问题就会非常的广泛，而此时提到的问题当然不是条款，更多的是易于忽略的相关技术细节，这一过程不是一朝一夕，是需要付出学习成本的。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们要了解一些重点！首先，定制开始屏幕和任务栏会涉及两种资源：传统 Windows 桌面应用（ClassicApps）和现代应用（UWPApps）也称为通用Windows应用。其次，会在两个位置进行定制：开始屏幕和任务栏。最后，涉及的应用程序如何部署：预先安装和交付之后安装。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 目前可确认的信息是，如果部署的是新版 Windows 10，要基于映像定制开始屏幕，则需要通过一个有严格格式规范要求的 XML 遵循指定的应用方式进行定制（PS：介于篇幅，本次分享不包含这个 XML 格式的内容），CopyProfile 将不再有效。此外，虽然目前 Unattend 中还提供向任务栏添加快捷方式的组件设置，但微软将会放弃此项支持。因为任务栏的定制可能会包含 UWPApps，必须通过特定的 XML 进行定制。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不知道上面的描述是否能够完全理解，没关系我们可以动手实践。前面提到过定制文件的应用方式非常之重要，所以今天要分享的主要内容就是基于映像定制的三种方式。在开始前我们需要先准备一个开始屏幕的定制文件，为了避免出错我们可以先在 Windows 10 参考环境下定制好开始屏幕，然后使用 PowerShell 的 export-startlayout 导出开始屏幕布局文件，我们会基于这个布局文件进行修改或应用。导出开始布局文件的命令行参考如下：</p><p><div class="code"> export-startlayout –path d:\startlayout.xml</div></p><p><a href="http://goxia.maytide.net/ftpup/2018/HOWTO--Windows-10-_CA2D/export-startlayout.png"><img width="630" height="85" title="export-startlayout" style="border: 0px currentcolor; border-image: none; display: inline; background-image: none;" alt="export-startlayout" src="http://goxia.maytide.net/ftpup/2018/HOWTO--Windows-10-_CA2D/export-startlayout_thumb.png" border="0"></a></p><p><strong>一. 为脱机映像应用布局文件</strong></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为脱机映像应用布局文件，此案例下假设 IT 人员已经预先安装好了应用程序，在 Sysprep 后关机，然后为这个脱机映像应用布局文件。即，将你的布局文件重新命名为“LayoutModification.xml”并复制到脱机映像的指定目录下，如：</p><p><div class="code">c:\mount\windows\users\default\appdata\local\microsoft\windows\shell\layoutmodification.xml</div></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 要点：布局文件中引用的 ClassicApps 路径应位于 %AppData% 或 %ALLUsersProfile% 的“程序”目录下，建议将“.lnk”拷贝到后者下。如果映像中未预先安装引用的 ClassicApps，则应使用“DesktopApplicationID”来引用这些应用程序，涉及的 AppID 可参考 gOxiA 的前一篇文章“<a href="http://goxia.maytide.net/read.php/1900.htm" target="_blank">HOWTO: 获取 Windows 10 应用程序的名称和AppID</a> ”。</p><p><strong>二. 通过 oobe 阶段导入布局文件</strong></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 利用 Unattend 在 oobeSystem 阶段的 FirstLogonCommands 添加 PowerShell 命令行，以导入布局文件，是 gOxiA 在用，也推荐大家应用的方式，能够正确配置所有用户使用统一的开始屏幕和任务栏布局，但对布局文件的修改要求比较高，需要将开始屏幕和任务栏布局整合在一个 XML 文件中，并加入其他的布局定义，以后会与大家分享。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 涉及的 PowerShell 命令行参考如下：</p><p><div class="code">powershell -command import-startlayout -layoutpath c:\windows\startlayout.xml -mountpath c:\</div></p><p><a href="http://goxia.maytide.net/ftpup/2018/HOWTO--Windows-10-_CA2D/oobesystem_firstlogoncommands.png"><img width="630" height="418" title="oobesystem_firstlogoncommands" style="border: 0px currentcolor; border-image: none; display: inline; background-image: none;" alt="oobesystem_firstlogoncommands" src="http://goxia.maytide.net/ftpup/2018/HOWTO--Windows-10-_CA2D/oobesystem_firstlogoncommands_thumb.png" border="0"></a></p><p><strong>三. 在 Sysprep 前应用任务栏布局文件</strong></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个方式其实仅针对需要自定义任务栏的场景。因为前面提过在定制任务栏时可能会添加 UWPApps，而通过 XML 是目前唯一可行的方式。但是此方式限制较多，只能额外向任务栏添加最多三个固定的应用程序，且不能替换系统默认布局。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先，需要创建一个专用于任务栏布局的 XML 文件，可参考：<a title="https://github.com/goxia/ITSM/blob/master/TaskbarLayoutModification.xml" href="https://github.com/goxia/ITSM/blob/master/TaskbarLayoutModification.xml">https://github.com/goxia/ITSM/blob/master/TaskbarLayoutModification.xml</a>，并拷贝至下面命令行中的路径。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然后，在审计模式下执行如下命令行以修改注册表配置，然后在执行 Sysprep 进行封装并重新捕获映像。这是因为此设置必须在 specialize 阶段前就应用在注册表中。</p><p><div class="code">cmd /c reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer /v LayoutXMLPath /d C:\Windows\Fabrikam\TaskbarLayoutModification.xml</div></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 要点： XML 的文件名和存放路径没有约束；ClassicApps 的 .lnk 建议位于 %ALLUSERSPROFILE% 的开始程序目录下（%ALLUSERPROFILE%\Microsoft\Windows\Start Menu\Programs\）;UWPApps 应使用“AppUserModelID”进行指定。</p>
]]>
</description>
</item>
</channel>
</rss>