【问题标题】:Preinstalling WinXP USB drivers to be able to connect device without interaction预装WinXP USB驱动,无需交互即可连接设备
【发布时间】:2011-03-19 23:19:58
【问题描述】:

我们是一家小型硬件制造商。我们的大多数产品都使用 USB 对所使用的控制器进行编程。 目前的情况是对硬件(汇编处理器的一部分)进行编程是相当费力的。 每次插入新的 USB 设备时,Windows 都会提示安装驱动程序。这意味着对于每个新产品,我们都必须经历一个“不,不要上网”-->“是,自动搜索”-->“完成”的过程。我们甚至必须为每个产品做两次。

我一直在尝试使用 Windows 预安装程序 (DPInst),但这似乎只能促进成功的“是的,自动搜索”部分。 有没有办法在插入 USB 设备后自动安装驱动程序?

亲切的问候,

罗纳德

【问题讨论】:

    标签: installation windows-xp usb driver


    【解决方案1】:

    我认为您的设备具有唯一的 USB 序列号,因此每个设备都被检测为以前从未见过的新设备。

    如果是这样,那么解决方案就是这样,来自http://www.lvr.com/usbfaq.htm

    在设备测试期间,我们附加了许多 相同的设备除了 序列号。我该如何预防 Windows 要求安装新的 驱动程序每次设备 附上?

    下面描述的方法导致 Windows 2000 和 XP 忽略一个 设备的序列号。它是 推荐用于测试环境 仅限。

    此注册表项控制是否 Windows 使用或忽略设备序列号 数字:

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\UsbFlags]

    可以忽略所有序列 数字,虽然这种方法不是 推荐的。忽略所有串行 数字,在上面的键中,改变这个 值为零:

    GlobalDisableSerNumGen = 1

    忽略序列号 单个设备,创建一个条目 在上面的 ...\UsbFlags 键下。这 名称必须以“IgnoreHWSerNum”开头 后跟供应商和产品 ID 的设备。值 1 =“禁用 序列号。”

    示例(供应商 ID = 0925h,产品 ID = 016Ah):

    忽略HWSerNum0925016A= 1

    另一种硬件/固件解决方案是在生产期间禁用设备 USB 序列号(例如,通过链接,可能由测试夹具制作)。如果没有 USB 序列号,Windows 将根据设备在连接树中的位置为设备分配一个伪序列号。这在生产运行期间不太可能改变,因此所有设备都将被视为相同,Windows 不会为新的驱动程序而烦恼。

    【讨论】:

      【解决方案2】:

      5 年前我也遇到过同样的问题。

      主要问题是在对应设备即插即用后安装USB驱动程序LocalSystem帐户下工作。为避免安全问题,Microsoft 允许静默安装仅由 Microsoft 签名的驱动程序。从 Windows Server 2003 开始​​,有记录的方式(请参阅http://www.microsoft.com/whdc/driver/install/authenticode.mspx)。

      如果您有一个托管的企业环境(您可以准备将​​使用您的即插即用设备的计算机),那么有一种解决方法可以解决 Windows XP 上的问题。我在 5 年前为我的一位客户推荐了它。大约 5 年以来,它在大约 10000 台 Windows XP 计算机的环境中运行良好。

      解决方案的想法很简单:您的驱动程序(例如 CAT 文件)必须使用以下签名进行签名

      • 同时具有 1.3.6.1.5.5.7.3.3(“代码签名”)和 1.3.6.1.4.1.311.10.3.6(“Windows 系统组件验证”)OID 作为增强型密钥使用 (EKU) 扩展
      • 证书或其父证书必须安装在机器的 Root(受信任的根证书)或 AuthRoot(第三方根证书颁发机构)证书存储中

      如果您在 Windows XP 计算机上执行此操作,操作系统会将您的驱动程序解释为 Microsoft 签名的驱动程序。

      您应该在注册表中插入驱动程序源的路径。

      【讨论】:

      • 这都是真的,但如果设备只是相同类型的不同单元,那么无论如何都不需要运行多个驱动程序安装。
      • 您根本不能安装驱动程序。如果它们被“作为 Microsoft 签名”签名并且将找到驱动程序的路径,则将完成静默安装。所以在我看来,你是否有相同类型的不同单位是独立的。新设备的安装无需与用户进行任何交互。试试我写的。如果您遇到问题,我可以向您发布一个示例,如何创建关于 MakeCert.exe 的自签名证书并测试我写的所有内容。
      • 感谢您的意见。我尝试使用的驱动程序实际上已签名。然而,驱动程序向导仍然要求我输入。也许 DPInst 无法识别签名。我现在通过禁用 USB 序列号找到了解决方法。这是通过将注册表项添加到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\USBFlags\ 来完成的。该键是:IgnoreHwSerNum04306001,意思是 IgnoreHwSerNum{VID}{PID}。添加此密钥后安装驱动程序。结果是所有具有此 VID/PID 的设备都被视为相同。同一驱动程序在几秒钟内连接。
      • 顺便说一句。这并不能解决我们客户轻松安装驱动程序的问题。但是我们的驱动版本确实是未签名的。使用 MakeCert.exe 是否合法?我猜Windows想证明自己?这可能是合法的,因为我实际上使用 FTDI 驱动程序,只是添加了我的 VID/PID。
      • 顺便说一句,5 年前,我建议解决方案的客户将我的建议发送给 Microsoft 以进行证明。微软同意,它是在 Windows XP 上工作的,一切都是绝对合法的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-03
      • 2018-11-10
      • 2012-04-02
      相关资源
      最近更新 更多