win10creatorsupdate1703

HOWTO: 使用 Windows 10 内置命令管理设备驱动

        在 Windows 10 之前在线管理和维护设备驱动是相当困难的事情。对于IT专业人员如果需要批量导入并安装驱动,只能依赖第三方应用程序,或者事先编写执行脚本。虽然我们可以使用 DISM 来执行操作,但关键的操作命令还是只能对脱机系统映像有效,所以还是非常的繁琐!为什么会如此尴尬呢?因为 Windows 支持硬件设备的即插即用(PnP)特性,而这一特性是由本地系统映像中强大的驱动库(DriverStore)来支撑的,它位于 Windows 的 System32 目录下。当系统连接一个新的硬件后会从这个 DriverStore 中搜索驱动,当发现匹配的驱动后变化配置为硬件设备使用,而此时驱动会被复制到 Windows 的 System32 下的 Drivers 目录中,被设备实时加载,而设备所需的其他子配置文件或程序文件可能分布在系统的其他目录中。

WinHardwareDriverStore

        如果我们要安装驱动则需要使用设备管理器手工为硬件设备更新或安装驱动,也可以使用设备生产商提供的驱动安装程序来执行安装,但是对于一些 OEM 设备,尤其是笔记本来说,需要反复执行设备驱动安装操作十几次,也是相当令人崩溃的,即使像前面所讲使用第三方应用程序实现批量安装,但要实现自动化处理还是命令来的更实在。

        Windows 10 提供了两个内置命令用于设备驱动的管理和维护,DISM.exe 和 Pnputil.exe 。DISM 在系统在线(联机)状态下只支持导出驱动,如果要添加和删除驱动必须在系统脱机状态下进行。

  • DISM 添加驱动
    dism /image:c:\mount\offline /add-driver /driver:c:\drivers /recurse /forceunsign
    /recurse,遍历指定目录下的所有子目录,还是相当有用。
    /forceunsign,添加未签名的驱动,在 X64 系统上添加未经签名的设备驱动可以使用这个参数。
  • DISM 删除驱动
    dism /image:c:\mount\offline /remove-driver /driver:oem1.inf
    设备所安装的第三方驱动都会被重新按照 Oem0.inf,Oem1.inf,Oem#.inf 命名方式存储,而删除的时候亦是如此。要获取系统都安装了哪些驱动可使用 /get-drivers 参数。令我们感到悲催的是删除驱动不支持通配符,只能一条一条执行,或编写成批处理脚本。
  • DISM 导出驱动
    dism /online /export-driver /destination:c:\exportdrivers
    也只有导出驱动是可以在系统脱机和联机状态下进行的,这倒是十分方便。一般IT部门拿到新型号笔记本后通常会使用这个命令导出驱动。(PS:这个习惯要养成,因为厂商提供的打包驱动不一定会完整,这是真的!!!)

        注意,即使能够脱机状态添加驱动,但是所添加的驱动也只能用于未安装驱动的设备实现自动的驱动安装,即已经安装的驱动不会被自动更新和替换,除非你在设备管理器中手动执行更新,或通过 Windows Update 从微软获取最新的设备驱动。(PS:十分无奈!!!)

        DISM 在脱机 Windows 映像中添加和删除驱动程序的完整过程可参考微软官方提供的资料,这里就不再过多的讲解。

        参考资料:https://msdn.microsoft.com/zh-cn/library/windows/hardware/dn898469(v=vs.85).aspx

        接下来再说说 Pnputil.exe - Microsoft PnP 工具,在 Windows 10 之前,这个工具简直就是鸡肋,可实现的设备驱动操作非常的有限,它更像是 DriverStore 层的维护工具。因为对硬件的实时驱动根本起不到管理作用。直到 Windows 10 v1703 版,Pnputil 才算真正意义的即插即用硬件设备驱动管理工具。其主要特性是允许在系统联机状态下执行添加、安装、卸载、删除以及导出驱动的操作。前面提到过设备被识别后,驱动是实时加载的,此时是无法使用命令行在联机状态下删除驱动的。而 v1703 较 v1607 最大的改进是支持了 卸载 和 安装 参数,即除了对 DriverStore 层执行操作外,也可以对 Drivers 层执行操作。

  • Pnputil 卸载和删除驱动
    pnputil /delete-driver oem#.inf /uninstall /force
    /uninstall,卸载并删除驱动
    /force,强制执行即使设备驱动正在使用中
    /reboot,更具需要重启系统以完成操作
    注意:直至 Windows 10  v1703 仍旧不支持批量卸载和删除驱动。
  • Pnputil 添加和安装驱动
    pnputil /add-driver c:\oem\*.inf /subdirs /install
    /subdirs,遍历子目录
    /install,安装或更新驱动
  • Pnputil 导出驱动
    pnputil /export-driver * c:\driverbackup
    注意:导出驱动支持 * 通配符,也支持导出单个驱动 Oem1.inf,要枚举驱动可使用 /enum-drivers 参数。

        DISM 和 Pnputil 相比较,DISM 更适用于系统映像准备阶段方便日后分发,例如拿到一批新型号设备,可以导出 OEM 驱动,并准备一个测试用途的企业标准化系统映像,使用 DISM 将驱动导入脱机映像中,当映像被安装到这些新型号设备后便可自动识别和安装驱动到系统中。而 Pnputil 更适用于联机系统的维护,例如 IT 专业人员从厂商获取到设备的最新驱动包,可以使用 Pnputil 直接批量安装和更新设备驱动。利用这些命令,我们还可以编写灵活的脚本满足更多的应用场景。

IMG_3516

HOWTO: 解决 MS17-010 安全更新安装失败的故障问题

        MS17-010 这个早在今年3月份就发布的安全更新,在这短短的几天里火遍了全球,其涉及的漏洞被恶意利用造成了不可估量的损失!针对事件本身 gOxiA 不再进行表态,而今天主要分享的内容是解决该补丁 - KB4012212(2017-03 Security Only Quality Update)在 Windows 7 上安装失败的故障问题。

        周一上班相关同事开始着手处理补丁方案,但发现不少客户端都出现了安装失败的问题,提示部分更新安装失败,由于KB4012212是仅包含安全质量更新的补丁包,所以部分更新安装失败是无法保障MS17-010是否正确安装的,所以只能对故障进行排错,找到错误根因!还好在系统事件中记录了补丁的失败原因“0x80073712”即“组件存储已损坏”,但实际排错中发现安装其他更新是没有问题的。

KB4012212-error

        只能跑一遍“sfc /scannow”先探探虚实,果然在27%时中断退出,提示无法完成修复,分析CBS 提取主要记录发现端倪,但貌似这些错误并不足以影响安全更新安装失败,看来焦点还是要回到 0x80073712 上,Msft Support 站点上扫了一圈还真找到了解决办法。

ms17-010-cbs

        KB947821 中提到了“系统更新准备工具”可帮助修复一些 Windows 的损坏错误,补丁200-500MB左右,安装时间最少需要15分钟,在 gOxiA 的案例中该补丁足足打了1小时还多,在临近结束时(大概 90% 这个阶段)停滞不前,期间切勿重启计算机,因为扫描组件完整性确实耗时。KB947821 更新安装后,再次安装 KB4012212 顺利完成。

        另外友情提示,在2016年5月微软为 Windows 7 和 8.1 提供了简化的更新方案,即更新汇总包!MS17-010 就包含在2017年3月汇总更新包中,当前最新版为5月汇总更新。(PS:懒惰或因规定不能每月常规补丁安装的,起码要坚持把安全汇总更新包给装上!!!)最后祝愿大家能安全度过此劫!

win10creatorsupdate1703

HOWTO: 使用预配置包为 Windows 10 设置默认应用关联

        前段时间 gOxiA 与大家分享了一篇“HOWTO: 统一设置 Windows 10 的文件默认关联”的文章,文末提到可以使用 WICD 生成配置包供 Windows 10 用户使用。其中截图里的设置方式有误,gOxiA 表示由衷的歉意,实在对不住大家了!!!也为此,决定单独写一篇文章再与大家详细分享一下 WICD 制作默认应用关联预配置包的过程,希望能够将功补过!

        要使用 ICD 通过预配置包来设置 Windows 10 的默认应用关联需要使用 Poilcy CSP ,借助 ApplicationDefaults/DefaultAssociationsConfiguration 进行预配置。但是该项的值需要使用 Base64 编码来填充,之前截图环境的服务器不能访问外网,也没有留意上一级的说明,导致犯下错误!DefaultAssociationsConfiguration 的说明如下:

DefaultAssociationsConfiguration
This setting specifies the XML file content (base64 encoded) thar contains file type and protocol default application associations. This file can be created using the DISM tool.

        gOxiA 之前的错误也正是因为这个原因!我们需要将导出的默认应用关联文件 defaultappassoc.xml 内容借助 Base64 encoder 工具编码后再填写到配置中。例如配置IE为默认应用的 XML 内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<DefaultAssociations>
  <Association Identifier=".htm" ProgId="htmlfile" ApplicationName="Internet Explorer" />
  <Association Identifier=".html" ProgId="htmlfile" ApplicationName="Internet Explorer" />
  <Association Identifier=".url" ProgId="IE.AssocFile.URL" ApplicationName="Internet 浏览器" />
  <Association Identifier=".website" ProgId="IE.AssocFile.WEBSITE" ApplicationName="Internet Explorer" />
  <Association Identifier="http" ProgId="IE.HTTP" ApplicationName="Internet Explorer" />
  <Association Identifier="https" ProgId="IE.HTTPS" ApplicationName="Internet Explorer" />
</DefaultAssociations>

        在使用 Base64 encoder 编码后得到的值则如下示例,在这里推荐个网站真的很不错http://www.ofmonkey.com/

PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPERlZmF1bHRBc3
NvY2lhdGlvbnM+CiAgPEFzc29jaWF0aW9uIElkZW50aWZpZXI9Ii5odG0iIFByb2dJZD0iaHRtbGZp
bGUiIEFwcGxpY2F0aW9uTmFtZT0iSW50ZXJuZXQgRXhwbG9yZXIiIC8+CiAgPEFzc29jaWF0aW9
uIElkZW50aWZpZXI9Ii5odG1sIiBQcm9nSWQ9Imh0bWxmaWxlIiBBcHBsaWNhdGlvbk5hbWU9Ikl
udGVybmV0IEV4cGxvcmVyIiAvPgogIDxBc3NvY2lhdGlvbiBJZGVudGlmaWVyPSIudXJsIiBQcm9nS
WQ9IklFLkFzc29jRmlsZS5VUkwiIEFwcGxpY2F0aW9uTmFtZT0iSW50ZXJuZXQg5rWP6KeI5ZmoIi
AvPgogIDxBc3NvY2lhdGlvbiBJZGVudGlmaWVyPSIud2Vic2l0ZSIgUHJvZ0lkPSJJRS5Bc3NvY0Zpb
GUuV0VCU0lURSIgQXBwbGljYXRpb25OYW1lPSJJbnRlcm5ldCBFeHBsb3JlciIgLz4KICA8QXNzb2N
pYXRpb24gSWRlbnRpZmllcj0iaHR0cCIgUHJvZ0lkPSJJRS5IVFRQIiBBcHBsaWNhdGlvbk5hbWU9I
kludGVybmV0IEV4cGxvcmVyIiAvPgogIDxBc3NvY2lhdGlvbiBJZGVudGlmaWVyPSJodHRwcyIgUH
JvZ0lkPSJJRS5IVFRQUyIgQXBwbGljYXRpb25OYW1lPSJJbnRlcm5ldCBFeHBsb3JlciIgLz4KPC9EZ
WZhdWx0QXNzb2NpYXRpb25zPg==

        下面就跟随 gOxiA 参考截图实践一次,首先启动 Windows 配置设计器(WICD,貌似现在叫 Windows Configuration Designer,这里姑且简称 ICD),友情提示该工具已经提供 UWP 版,可以直接从 Windows 应用商店安装,访问地址是:https://www.microsoft.com/store/apps/9nblggh4tx22

        在 ICD 起始页选择“高级预配”,并确认为“预配桌面设备”,输入个便于识别的名称,默认情况下 ICD 预配相关文件存储在文档的 WICD 目录下。

1

2

3

4

        在“可用自定义项”列表中定位到 Polices | ApplicationDefaults | DefaultAssociationsConfiguration,将之前通过 Base64 encoder 取得的数据填写到数值框中。

5

        最后通过工具导航栏导出预配包,在“描述预配包”步骤中,版本号会根据修改次数自动添加,所有者可以根据要实施的优先级别进行选择,等级保持 0 即可,如果预配包包含敏感数据应当对其进行加密,最后将生成的 ppkg 格式文件发给用户执行即可。如果预配包安装时发生错误,可以在事件查看器的“应用和服务日志”-“Microsoft”-“Windows”-“DeviceManagement-Enterprise-Diagnostics-Provider”-“Admin”下找到记录。

6

7

8

9

10

11

分页: 44/148 第一页 上页 39 40 41 42 43 44 45 46 47 48 下页 最后页 [ 显示模式: 摘要 | 列表 ]