Installation 预安装WinXP USB驱动程序,以便无需交互即可连接设备

Installation 预安装WinXP USB驱动程序,以便无需交互即可连接设备,installation,windows-xp,usb,driver,Installation,Windows Xp,Usb,Driver,我们是一家小型五金制造商。我们的大多数产品使用USB对所使用的控制器进行编程。 目前的情况是,对硬件(汇编处理器的一部分)进行编程相当耗费人力。 每次插入新的USB设备时,Windows都会提示安装驱动程序。这意味着对于每一个新产品,我们都必须经历一个“不,不要上网”->“是的,自动搜索”->“完成”的过程。我们甚至需要为每种产品做两次 我一直在试用Windows preinstaller(DPInst),但这似乎只会促进成功的“是的,自动搜索”部分。 有没有办法在插入USB设备后完全自动安装驱

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

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

亲切问候,


罗纳德

五年前我也有同样的问题

主要问题是,在响应设备即插即用后,USB驱动程序的安装在本地系统帐户下运行。为避免安全问题,Microsoft只允许静默安装由Microsoft签名的驱动程序。从Windows Server 2003开始,有一些文档化的方法(请参阅)

如果您有一个受管理的公司环境(您可以准备使用即插即用设备的计算机),那么有一个解决Windows XP问题的解决方法。5年前我为我的一位客户提出了这个建议。它在大约10000台Windows XP计算机的环境中工作了5年,工作非常完美

解决方案的想法非常简单:您的驱动程序(例如CAT文件)必须使用

  • 将1.3.6.1.5.5.7.3.3(“代码签名”)和1.3.6.1.4.1.311.10.3.6(“Windows系统组件验证”)OID作为增强密钥使用(EKU)扩展
  • 证书或其父证书必须安装在计算机的根(受信任的根证书)或AuthRoot(第三方根证书颁发机构)证书存储中
如果您在Windows XP计算机上执行此操作,操作系统将像Microsoft签名驱动程序一样解释您的驱动程序


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

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

如果是,则解决方案如下:

在设备测试期间,我们附加了许多 相同的设备,除了 序列号。我怎样才能预防 Windows请求安装新的 每次安装设备时,驱动程序 附加的

下面描述的方法导致 Windows 2000和XP将忽略 设备的序列号。它是 建议用于测试环境 只是

此注册表项控制是否 Windows使用或忽略串行设备 编号:

[HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\UsbFlags]

可以忽略所有序列号 数字,尽管这种方法并不适用 推荐。忽略所有序列号 数字,在上面的键中,更改此 值为零:

GlobalDisableSerNumGen=1

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

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

IgnoreHWSerNum0925016A=1


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

这都是事实,但如果设备只是同一类型的不同单元,这样,就不需要运行多个驱动程序安装。您根本不能安装驱动程序。如果它们被“作为Microsoft签名”签名,并且找到驱动程序的路径,则将执行静默安装。所以在我看来,是否有相同类型的不同单元是不确定的。新设备将在不与用户进行任何交互的情况下安装。试试我写的。如果您有问题,我可以向您发布一个示例,说明如何创建关于MakeCert.exe的自签名证书,并测试我编写的所有内容。感谢您的输入。我尝试使用的驱动程序实际上已经签名。但驱动程序向导仍然要求我输入。也许DPInst不识别签名。我现在找到了一个解决办法,禁用USB序列号。这是通过将注册表项添加到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\USBFlags\来完成的。注册表项是:IgnoreHwSerNum04306001,意思是IgnoreHwSerNum{VID}{PID}。添加此密钥后将安装驱动程序。结果是,所有具有此VID/PID的设备都被视为相同的设备。顺便说一句,同一个司机在几秒钟内就接通了。这并不能为我们的客户解决易于安装驱动程序的问题。但我们版本的驱动程序确实是未签名的。使用MakeCert.exe合法吗?我猜Windows想要证明自己?这可能是合法的,因为我实际上使用的是FTDIs驱动程序,只是在其中添加了我的VID/PID。顺便说一下,5年前,我的客户(我为其提出了解决方案)将我的建议发送给了Microsoft以供证明。微软证实,它是在WindowsXP上工作的,所有这些都是绝对合法的。