微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何手动部署驱动程序服务?

我如何手动部署或注册Windows筛选器驱动程序?

警告 :前面有很多“研究努力的证据”。 如果你不想要,你不必再阅读。 我只是详细地指出,我已经尝试了你应该做的,我已经尝试了MSDN所说的,并且我已经尝试了互联网上任何地方的任何人都曾经提出的build议。

tl; dr: 预期的方式是什么?

背景

我正在testing将在Visual Studio 2013中开发的64位驱动程序部署到64位Windows机器上。 我想用Windows注册驱动程序服务,并启动它。

当path太长时,NSIS – EnvVarUpdate会覆盖系统path,是否有解决方法

如何最小化Python中的特定窗口

如何知道我的Windows应用程序何时被终止?

在Windows中运行JavaScript

在Java(窗口)“上次访问”与“上次修改文件date

你有什么尝试

Visual Studio 2013驱动程序部署function

理想情况下,您将使用Visual Studio的function自动部署到远程机器 。 不幸的是它不起作用( “发生扩展错误” )

使用添加新硬件向导

理想情况下,您将使用Windows 添加新硬件向导 (请参阅MSDN页面使用添加硬件向导安装驱动程序包 。幸运的是,从Windows 7开始,Microsoft从控制面板中删除添加新硬件向导;要求您手动运行Hdwwiz.exe从一个提升的命令提示符,不幸的是你不能使用添加新硬件向导添加安装驱动程序包,因为添加新硬件向导只适用于硬件 (即它不适用于filter驱动程序):

向导知道这一点,所以不提供让您安装任何驱动程序服务。

SC命令行实用程序

理想情况下,您可以使用提升的命令提示符下的服务控制pipe理器使用sc.exe工具手动注册驱动程序服务:

>sc create MyDriver binPath="C:DropDriverMyDriver.sys" type=kernel >[SC] CreateService SUCCESS

不幸的是,即使在驱动文件上有一个有效的数字签名:

Windows将拒绝安装驱动程序:

OSR的驱动程序加载程序实用程序

理想情况下,可以使用OSR的Driver Loader工具 。 但即使使用有效的数字签名驱动程序文件,驱动程序也不会安装:

.INF设置文件

理想情况下,您将部署驱动程序包,并通过从.inf安装来安装它 。 然后,我可以右键单击INF,select安装 。 但它不起作用 – 它不会注册任何新的驱动程序服务。

.INF安装与DefaultInstall部分

理想情况下,您只需使用.INF文件DefaultInstall节。 Windows将只执行DefaultInstall部分。 不幸的是,MSDN警告您不允许将它用于驱动程序:

注意 驱动程序包的INF文件不能包含INF DefaultInstall

你不能这样做的原因是因为DefaultInstall没有AddService指令。 即使我们忽略这个警告并尝试,它也不会起作用 – 它不会注册任何新的驱动程序服务。

.INF安装与DefaultInstall.Services部分

虽然MSDN警告您不要使用DefaultInstall来注册驱动程序服务,但我们可以忽略它们并使用[DefaultInstall.Services]部分。 幸运的是,它实际上试图安装驱动程序服务:

但Windows然后声称该驱动程序是无符号的:

实际上没有驱动程序服务注册

SetupAPI InstallHinfSection函数

理想情况下,我可以使用SetupAPI运行相当于上面的命令行:

>rundll32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 C:DropDriveripfw.inf

除了驱动程序没有安装。 函数成功返回; 但Windows认为驱动程序是无符号的:

使用BCDEDIT启用TESTSIGNING

理想情况下,我将按照TESTSIGNING引导configuration选项中的说明进行操作, 该选项表示从提升的命令提示符处运行:

>Bcdedit.exe -set TESTSIGNING ON

除了失败的错误

>Bcdedit.exe -set TESTSIGNING ON An error has occurred setting the element data. The value is protected by Secure Boot policy and cannot be modified or deleted.

使用BCDEDIT打开DEBUG

理想情况下,我会按照在开发和testing过程中安装未签名驱动程序的说明,该说明从提升的命令提示符下运行:

>bcdedit -debug on

除了失败并出现错误

>bcdedit -debug on An error occurred while attempting to modify the debugger settings. The value is protected by Secure Boot policy and cannot be modified or deleted.

使用高级恢复选项来禁用驱动程序签名实施

理想情况下,我会使用高级恢复选项来禁用驱动程序签名的执行:

除了Windows启动之后,驱动程序签名仍处于启用状态:

在BIOS中禁用SecureBoot

理想情况下,在这个虚拟的Hyper-V计算机中,我将在其虚拟BIOS中禁用SecureBoot:

然后尝试禁用驱动程序签名策略。

噢,我的上帝,这三天。 我想要一个来自微软的人解释:

不仅是开发过程中testing驱动程序的正确方法

而是要详细解释为什么上述每个尝试都失败了

什么是正确的方法

而不是我尝试随机的东西,一遍又一遍(又一遍又一遍),安装过滤驱动程序服务的正确方法是什么?

奖金问题

为什么微软拒绝让开发人员更轻松?

奖金喋喋不休

驱动程序文件使用有效的可信证书进行签名。

签署.sys驱动程序文件的证书也位于本地计算机 受信任的根证书存储区中:

这就是为什么驱动程序文件的签名是有效的和可信的。

MSDN上的随机页面上的一次性评论说,testing证书必须添加到本地机器商店中的两个位置:

必须添加用于将签名embedded到驱动程序文件中并签署驱动程序包的 目录文件的testing证书

受信任的根证书颁发机构证书存储区

受信任的发布者证书存储区

这解释了为什么我将证书添加到另一家商店:

Windows 10技术预览,64位

奖金阅读

使用添加硬件向导安装驱动程序包

使用INF文件安装文件系统filter驱动程序

使用INF文件卸载文件系统filter驱动程序

编写设备安装应用程序

INF DefaultInstall节

安装testing证书

在testing计算机上安装testing证书

使用CertMgr在testing计算机上安装testing证书

Maven:找不到mvn命令

3.3.5更新后打开.py文件

用Python写入Vista的串口

在Windows上的Mongodb性能

C#循环来填充多个DataGridView

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐