积极答复者
关于设备过滤驱动的预安装问题

问题
-
大家好
单位最近做了一个产品,是关于异形的键盘,需要加载相应的过滤驱动,对设备驱动进行过滤,
安装的现象如下:
1、 预安装驱动成功,即调用SetupCopyOEMInf函数成功后,在驱动仓库也找到了相应的过滤驱动程序包,
包括相应的INF文件、PNF文件以及SYS文件,Windows\inf文件夹下也生成了OEM*.inf。
2、 插入相应的异形键盘,加载了微软的标准驱动程序,没有加载自己定义的驱动。
调查了相应的资料,驱动加载的选择会有一个打分的规则,通过签名、特征分与设备ID分来进行,
疑问是:
1、如果不进行WHQL认证,系统是否就无法通过预安装主动加载自定义的驱动?
2、即使在硬件的PID和INF中的匹配以及使用测试签名的情况下,系统也依然认为微软的驱动优先级比较高?
答案
-
Windows 7、Windows XP 在控制面板“系统”属性关于硬件配置的高级选项里选择始终信任未通过 WHQL 认证的驱动就可以。Windows 8、Windows 10 现在好像是越来越严格了,必须通过“设置”里的“疑难解答”选择高级选项重新启动计算机,然后按 F7 进入调试模式才能安装没有认证的驱动。
Driver Store and Device Path 是全部的本地途径,获取驱动还有来自网络的途径。
Alexis Zhang
http://mvp.microsoft.com/zh-cn/mvp/Jie%20Zhang-4000545
http://blogs.itecn.net/blogs/alexis推荐以 NNTP Bridge 桥接新闻组方式访问论坛。
本帖是回复帖,原帖作者是楼上的 "为大家服务"
| 1、为了在WHQL认证之前确认过滤驱动的预安装这个功能好用,怎样修改默认设置变为始终信任未通过认证的驱动?是使用某个具体的API函数,还是在系统的某个设置中进行调整,或者通过修改注册表项?具体方法是什么样的?
- 已标记为答案 Tyler Zhao 2017年2月20日 3:07
-
噢,我好像记错了,那是 Windows XP,不好意思。
Windows 7 可以通过组策略设置“用户配置”-“管理模板”-“系统”-“设备驱动程序的代码签名”。或者在系统启动之前在 F8 启动菜单里选择“禁用驱动程序签名强制”也行。
Alexis Zhang
http://mvp.microsoft.com/zh-cn/mvp/Jie%20Zhang-4000545
http://blogs.itecn.net/blogs/alexis推荐以 NNTP Bridge 桥接新闻组方式访问论坛。
本帖是回复帖,原帖作者是楼上的 "为大家服务"
| 回答十分有用,特别感谢
| 有个细节想确认下:在控制面板中的系统”属性对话框中没有找到关于硬件配置的高级选项,这个设置在哪呢?- 已标记为答案 Tyler Zhao 2017年2月21日 2:02
全部回复
-
1. 不是绝对不行,但 Windows 对驱动 WHQL 认证的趋势越来越严格,默认设置需要修改为始终信任未通过认证的驱动才可以。
2. 这个只影响驱动获取的途径,不影响安装的优先级。据我所知应该还没那么“流氓”。
Alexis Zhang
http://mvp.microsoft.com/zh-cn/mvp/Jie%20Zhang-4000545
http://blogs.itecn.net/blogs/alexis推荐以 NNTP Bridge 桥接新闻组方式访问论坛。
本帖是回复帖,原帖作者是楼上的 "为大家服务"
| 1、如果不进行WHQL认证,系统是否就无法通过预安装主动加载自定义的驱动?
| 2、即使在硬件的PID和INF中的匹配以及使用测试签名的情况下,系统也依然认为微软的驱动优先级比较高?- 已建议为答案 Alexis ZhangMVP, Moderator 2017年2月16日 14:09
-
Zhang先生:
十分感谢回答,收益很多!
但是仍然有几个小疑问,想请教下。
1、为了在WHQL认证之前确认过滤驱动的预安装这个功能好用,怎样修改默认设置变为始终信任未通过认证的驱动?是使用某个具体的API函数,还是在系统的某个设置中进行调整,或者通过修改注册表项?具体方法是什么样的?
2、驱动的获取途径是指“just Driver Store”和“Driver Store and Device Path”这两个途径么(引号中的值从setupapi.dll中获得的)?
3、在setupapi.dev.log中查看到“Policy is set to make all digital signatures equal.”这个值,这个值是否就是驱动匹配策略设置后打印的Log信息?
再次感谢,辛苦了!
- 已编辑 Tyler Zhao 2017年2月17日 1:59
-
Windows 7、Windows XP 在控制面板“系统”属性关于硬件配置的高级选项里选择始终信任未通过 WHQL 认证的驱动就可以。Windows 8、Windows 10 现在好像是越来越严格了,必须通过“设置”里的“疑难解答”选择高级选项重新启动计算机,然后按 F7 进入调试模式才能安装没有认证的驱动。
Driver Store and Device Path 是全部的本地途径,获取驱动还有来自网络的途径。
Alexis Zhang
http://mvp.microsoft.com/zh-cn/mvp/Jie%20Zhang-4000545
http://blogs.itecn.net/blogs/alexis推荐以 NNTP Bridge 桥接新闻组方式访问论坛。
本帖是回复帖,原帖作者是楼上的 "为大家服务"
| 1、为了在WHQL认证之前确认过滤驱动的预安装这个功能好用,怎样修改默认设置变为始终信任未通过认证的驱动?是使用某个具体的API函数,还是在系统的某个设置中进行调整,或者通过修改注册表项?具体方法是什么样的?
- 已标记为答案 Tyler Zhao 2017年2月20日 3:07
-
噢,我好像记错了,那是 Windows XP,不好意思。
Windows 7 可以通过组策略设置“用户配置”-“管理模板”-“系统”-“设备驱动程序的代码签名”。或者在系统启动之前在 F8 启动菜单里选择“禁用驱动程序签名强制”也行。
Alexis Zhang
http://mvp.microsoft.com/zh-cn/mvp/Jie%20Zhang-4000545
http://blogs.itecn.net/blogs/alexis推荐以 NNTP Bridge 桥接新闻组方式访问论坛。
本帖是回复帖,原帖作者是楼上的 "为大家服务"
| 回答十分有用,特别感谢
| 有个细节想确认下:在控制面板中的系统”属性对话框中没有找到关于硬件配置的高级选项,这个设置在哪呢?- 已标记为答案 Tyler Zhao 2017年2月21日 2:02
-
很高兴对您有所帮助。
Alexis Zhang
http://mvp.microsoft.com/zh-cn/mvp/Jie%20Zhang-4000545
http://blogs.itecn.net/blogs/alexis推荐以 NNTP Bridge 桥接新闻组方式访问论坛。
本帖是回复帖,原帖作者是楼上的 <Tyler Zhao>;
| Zhang先生:
| 所有问题已解决,十分感谢