Windows XP 自定义 USB 类驱动程序,无需 WHQL 签名即可预安装?
我正在为 USB 设备开发 Windows 驱动程序,并且安装必须覆盖 Microsoft 的内置类驱动程序,以便设备使用我的驱动程序。
该驱动程序是自签名的,但没有 WHQL 签名。在 Vista 或 Win7 上安装不是问题,SetupAPI 会确认驱动程序已签名,并选择它作为内置类驱动程序的首选驱动程序。
但是,这在 Windows XP SP3 上不起作用。 SetupAPI 日志告诉我它找到了驱动程序,但认为它不受信任。 (日志摘录:“驱动程序节点不受信任,等级从 0x00000001 更改为 0x0000c001”)
之前在 stackoverflow 和其他地方对类似问题的回答表明,WHQL 签名是在 XP 上运行的唯一方法。确实如此,还是有任何已知的解决方法?
有人有任何资源链接,其中包含有关解决方法或问题解决方案的信息吗?
我很感激任何有关此事的帮助。
I'm working on a Windows driver for a USB device and the installation has to override the built-in class driver from Microsoft, so that the device uses my driver.
The driver is self-signed but not WHQL signed. Installation is not a problem on Vista or Win7, where SetupAPI acknowledges the driver as signed and selects it as the preferred driver over the built-in class driver.
However, this does not work on Windows XP SP3. The SetupAPI log tells me that it finds the driver, but considers it untrusted. (Log excerpt: "Driver node not trusted, rank changed from 0x00000001 to 0x0000c001")
Previous answers to similar questions here on stackoverflow, and other places, suggest that WHQL signing is the only way for this to work on XP. Is that really the case, or are there any known workarounds?
Does anybody have any links to resources with information about workarounds, or a solution to the problem?
I appreciate any help on the matter.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,事实确实如此。
我可能已经提到了我们在项目中使用的解决方法,但这与您无关,因为您的产品面向广阔的市场,并且您不能依赖具有静态设备实例 ID 的设备。 (为了维护“已知”设备实例 ID,我们在 USB 集线器之上使用过滤器驱动程序。我提到这一点只是因为您可能对我们使用的“神秘”解决方法感到好奇。)
顺便说一句,也许您可以将您的驱动程序重写为设备过滤驱动程序。它们不受相同的 WHQL 限制。
编辑:如果您愿意将证书安装到客户的根证书存储中(这是一个可能疏远客户的冒险选择),可能有一个解决方案适合您:
预安装 WinXP USB 驱动程序无需交互即可连接设备
Yes, this is really the case.
I might've mentioned a workaround we use in my project, but it's irrelevant for you, as your product is intended for the broad market and you cannot rely on your devices having a static Device Instance ID. (To maintain a "known" Device Instance ID, we use a filter driver on top of the USB hub. I'm only mentioning this because you might be curious about that "mysterious" workaround we use.)
By the way, maybe you could rewrite your driver as a device filter driver. They're not subject to the same WHQL limitations.
Edit: If you're willing to install your certificate into your customers' root certificate stores (a risky choice that might alienate your customers), there might be a solution for you:
Preinstalling WinXP USB drivers to be able to connect device without interaction