HOWTO: 解决 Windows DISM error ID3 0x80070003 故障
HOWTO: 解决 Windows DISM error ID3 0x80070003 故障
DISM error ID3 的故障描述,自定义的 Windows 7 标准化系统映像测试正常,封装后在测试环境中部署时发现在 offline mode 下使用 DISM 对系统进行管理时操作失败,如下图所示 DISM 未能找到有效的 Windows 目录,但是当前系统路径确实是有效的,本以为是封装前的系统出现了异常,也反复进行了原始映像的测试,并对当前系统进行了检查并未发现有什么可疑的地方,无奈只能重点排查 DISM 日志!
在对 dism.log 文件进行了分析后,发现了详细的报错信息,DISM 在对脱机映像执行操作时发生了错误,“DISM OS Provider: PID=1420 Failed to mount the remote registry...(hr:0x80070003)”!复查系统映像创建中的配置修改以及后续部署时无人应答文件的设置,可算找到了线索在应答文件中对用户配置文件进行了重定向,该设置会将 Users 目录移动到其他分区,这就导致“All Users” 和“Default”目录也被移动,而 Default 目录包含默认的注册表数据文件(NTUSER.DAT),当 DISM 对脱机映像管理时会去 Mount 这个注册表数据文件,所以最终导致操作失败。
而要解决这个问题的办法还是相当简单的,就是在系统所在分区创建一个相同的目录结构(C:\Users\Default\), 并将 Windows 安装源(Install.wim)中的 NTUSER.DAT 文件拷贝过去即可。在微软官方的知识库(KB2293874)中确认了这是一个已知的问题。
随后 gOxiA 在 Windows 10 上也重现了这个故障问题,dism.log 中记录的错误提示稍有区别,但意思完全相同,所以解决方法一致。为什么时隔7年这个问题仍旧没有解决,恐怕也只有产品组的人员知道!不过也完全可以理解,在企业环境中要重定向用户配置文件目录通常会使用组策略进行设置,此法不会移动系统级的目录;而直接通过应答文件的做法恐怕也是极为罕见的场景需求。
HOWTO: 通过预先配置 TrustedImageIdentifier 以加速 Windows 10 黄金映像
HOWTO: 通过预先配置 TrustedImageIdentifier 以加速 Windows 10 黄金映像
Windows 10 应答选项中包含一个参数 - "TrustedImageIdentifier",位于 "amd64_Security-Malware-Windows-Defender_neutral"下,利用这个参数设置可以加速 Windows 10 黄金映像的运行速度,即在应答文件中的初始化阶段添加一个 GUID 值,告知 Windows Defender 该系统映像是安全的,这样 Windows Defender 便不会对系统进行扫描。
使用和维护 Windows Defender 的 IT 人员应该了解,因为 Windows Defender 在初始化的系统上会对系统主要文件进行扫描,以确保文件安全,如果没有单独执行一次完整的扫描,便会在后台进行调度,这样一来便会影响系统的运行速度,所以这就是为什么全新安装的系统在期初运行时会感觉慢的原因。
要预先配置“TrustedImageIdentifier”需要进行两个步骤,在应答文件中添加 TrustedImageIdentifier 对应的 GUID 值,并为当前参考映像环境的注册表指定位置添加对应的 GUID 值。为此我们执行如下步骤:
第一步,使用 Windows System Image Manager(该工具位于 WindowsADK 中)先创建或修改 Windows 安装应答文件,在 Windows 编录下的 Components 中找到“amd64_Security-Malware-Windows-Defender_10.0.14393.0_neutral”,将其添加到应答文件的“4 specialize” 阶段,然后为 TrustedImageIdentifier 填入系统的 GUID 值。
第二步,在参考映像(即黄金映像)系统中打开注册表编辑器,定位至“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender”,并添加一个新的字符串,命名为“TrustedImageIdentifier”,其值为之前在应答文件中设置的 GUID。
完成上面的两个步骤就可以对黄金映像进行打包(Sysprep)以便于分发给最终用户。值得注意的是在修改注册表时管理员是没有修改权限的,所以需要先拿到所有权再进行修改;另外,如果很不幸你在分发部署黄金映像后发现该映像存在安全问题,那么可联系 Windows Ecosystem Engagement team 并提供映像的 GUID 值,这样微软会将这个不安全的 GUID 更新到 Windows Update 中,Windows Defender 在更新后会对当前系统执行完全扫描。
最后提供两篇微软官方的参考资料:
TrustedImageIdentifier:
https://technet.microsoft.com/en-us/library/hh825450.aspx
Configure a Trusted Image Identifier for Windows Defender:
Surface Pro 4 批量部署系列 - 应答文件优化
Surface Pro 4 批量部署系统 - 应答文件优化
Surface Pro 4 的批量部署工作已经结束,也算有时间能够继续完善这个系列的经验总结。在开始前先回顾一下之前已经发布的两篇文章“Surface Pro 4 批量部署系列 - 驱动程序安装”、“Surface Pro 4 批量部署系列 - Windows 10 激活”。Surface Pro 4 与常规设备系统部署基本一致,主要考虑的问题就是驱动的注入和新系统的激活。驱动的注入主要是考虑提前在映像中安装驱动,以加速部署速度,并可脱离 MDT 进行独立安装;Windows激活主要是考虑新系统只是应用自定义映像,授权方式并不修改,而新 Surface 设备直接重装自定义系统后会导致预激活信息丢失,必须手工提取OA3密钥进行激活。
剩余的主要考虑事项恐怕就是应答文件的优化,虽然我们会对系统映像进行预先定制和设置,但是为了确保这些修改在后续生效,或者做个双保险,又或者一些设置必须通过应答文件设置,所以我们还是需要针对部署用的应答文件进行修改和完善。
- SkipRearm = 1,因为系统映像会阶段性的进行修改、完善,所以会多次进行 Sysprep 操作,为了确保系统保留有效次数的Rearm,建议在 Generalize 阶段跳过 Rearm。
- InputLocale = 0804:00000804
SystemLocale = zh-cn
UILanguage = zh-cn
UserLocale = zh-cn
由于 MDT 是一种部署加速解决方案,所以它并不会像应用程序那样智能,能够通过当前系统环境来自动配置应答文件中涉及的语言设置,所以默认情况下 MDT 的默认应答文件均以英文环境来进行设置。而我们通常会为客户端部署中文版系统,所以需要对应答文件的几个阶段进行配置修改,它们是:
1 windowsPE
3 generalize
4 specialize
7 oobesystem - TimeZone = China Standard Time,原因同上所以我们需要针对 specialize 和 oobesystem 阶段的时区配置进行修正。
- 由于批量部署应用在企业环境下,为了使预定制映像中的系统桌面环境能够应用到每个登录到系统上的用户账号,需要配置 specialize 阶段的 CopyProfile = True,以启用默认用户配置文件拷贝。
- 在 specialize 阶段添加 DisableSR = 1,以禁用系统还原。
- 在 specialize 阶段添加 fDenyTSConnections = false,以启用远程桌面。
- 通常在企业环境中会采用第三方的防病毒软件,那么禁用系统自带的 Windows Defender 是非常必要的,所以在 specialize 阶段添加 DisableAntiSpyware = true。
- 如果你正在使用 SDA,那么需要检查 oobesystem 阶段下的 Display 设置,确认添加如下配置,因为在 SDA 环境下该默认该配置数据缺失,而 Surface Pro 4 的默认分辨率为 2376*1824。
ColorDepth = 32
HorizonralResolution = 2376
RefreshRate = 60
VerticalResolution = 1824 - 根据需要配置 OEM信息,为此可在 oobesystem 阶段为 OEMInformation 指定相关配置。
Logo = %windir%OOBEinfoSurface.bmp
Manufacturer = Microsoft Corporation
Model = Surface Pro 4
以及 SupportHours、SupportPhone 和 SupportURL 时间。 - 为了加快 OOBE 的速度减少人为干预,可隐藏 oobesystem 阶段 OOBE 下的相关配置。
HideEULAPage = True
HideLocalAccountScreen = True
HideOEMRegistrationScreen = True
HideOnlineAccountScreens = True
HideWirelessSetupInOOBE = True - 如果要脱离MDT单独部署映像,只需要删除 oobesystem 下的 FirstLogonCommands 项。