当我获得一个新的外围设备(例如花式鼠标或新键盘)时,通常我会看到驱动程序正在安装。
一旦设备的驱动程序完全安装,硬件就可以工作。
我很好奇(从技术角度来看)Windows 如何检测新设备?
它如何获得自动安装到机器上的权限?
编写了什么代码可以自动推送驱动程序软件?
这有风险吗?这些自动软件信息会被利用吗?
答案1
我不敢自称是专家,但我可以粗略地回答您的问题和观点。我假设我们讨论的是即插即用设备,例如 USB 外围设备。
既然你提到了 Windows,我将首先解释一下它的工作原理(AFAIK):
- 您将设备插入
- 计算机使用标准化协议与设备通信以获取设备供应商ID(VID)和产品ID(PID)。
- Windows 会在本地查看是否已安装该特定 VID/PID 的驱动程序,如果是,Windows 会初始化该设备的驱动程序,然后该设备就会像魔术一样工作。
- 如果找不到已安装的驱动程序,Windows 会搜索一些预定义的本地目录,它知道这些目录可能包含此设备所需的驱动程序。通常,当您安装相关软件时,它会将这些驱动程序提供给操作系统。如果找到了驱动程序,那就太好了,Windows 将继续安装它,然后初始化它以供连接的设备使用。
- 如果本地没有可用的驱动程序,Windows 将联系 Windows Update 并询问它是否有您连接设备的驱动程序。大多数大品牌都会通过 Windows Update 提供其驱动程序,我只能希望有某种形式的验证过程或至少对那些能够添加到 Windows Update 的驱动程序进行信誉检查,以确保恶意驱动程序不会被发送到您的机器。
- 如果以上所有方法都失败了,很遗憾,您似乎必须手动获取并安装驱动程序。
这可能是对其工作原理的过于简单的解释,但我认为这足以回答您的问题。
还需要考虑的一些其他要点也可以回答您的一些更具体的问题:
- 许多常见设备(键盘、鼠标、网络摄像头等)将使用所谓的通用驱动程序。此驱动程序安装在机器上,可供符合通用设备定义功能的任何设备使用。通常,“花哨设备”可以在通用驱动程序上运行,直到您安装允许有限功能的完整驱动程序 - 例如,图形输入板可能作为通用 HID(人机界面设备)安装并像鼠标一样运行,但没有官方驱动程序无法区分手指和笔,也无法检测压力或角度等。
- 就权限而言,安装驱动程序的服务以 SYSTEM 用户身份运行,该用户拥有提升的权限来更改您的系统。设备没有权限推送代码并在您的计算机上执行代码,但是某些需要特定软件的设备(如 3G 加密狗)可能具有通用大容量存储设备,其中包含可以显示并提示用户安装所需软件/驱动程序的驱动程序。
如果任何拥有更多技术知识的人能够看出我所说的任何内容是错误的或具有误导性的,那么请评论或编辑此内容。
答案2
这些驱动程序中的许多都包含在基本 Windows 安装中,其他驱动程序托管在 Microsoft Update 上,因此已经是操作系统的“可信来源”。
硬件包含唯一标识符,操作系统会使用该标识符来确定设备是什么以及需要哪个驱动程序。一旦 Windows 将当前硬件的唯一标识符与驱动程序匹配,它就可以选择适当的来源,可以是预先存在的驱动程序、Windows 更新,也可以要求您提供其他来源。
显然,该过程实际上比这复杂得多,但这是一个简化版本的过程。
答案3
至少,Windows 8 有一个Device Install Service
,引用服务描述:
使计算机能够识别并适应硬件变化,而无需用户输入。停止或禁用此服务将导致系统不稳定。
这是一个触发服务,每当插入新设备时就会启动,并且几乎肯定会为记忆棒等安装必要的设备驱动程序。
它能够安装的设备驱动程序将仅是 Microsoft 存储和处理的驱动程序。它根本不会从产品制造商处下载驱动程序,而是(出于安全原因)仅限于从特定的 Microsoft 服务器组下载。
对于需要特殊驱动程序的设备,硬件制造商会将其驱动程序提交给 Microsoft,以便对其进行数字签名,这样 Windows 才允许加载它们。我认为这项服务的一部分将包括将驱动程序自动设置为下载到计算机的功能。
由于驱动程序已经经过数字签名,并且有系统服务可以安装设备驱动程序,因此 Microsoft 拥有一条安全路径,通过该路径他们可以保证只有“已知良好”的软件才能安装到机器上。由于 Microsoft 可以验证软件是否良好,因此他们可以省去 UAC 要求,只需自行安装软件即可。
至于它是否安全。它和你的电脑一样安全。任何可以利用该服务安装他们自己的软件的方法都已经对你的电脑进行了非常深入和关键的控制,并且几乎肯定可以安装更多软件而无需利用 Windows 设备安装服务。另一种选择是,无论什么恶意软件都控制了几个关键的互联网设备,并暴露了只有微软自己才能访问的私钥。
所以,是的,它应该是安全的。