我如何手动部署或注册Windows筛选器驱动程序?
警告 :前面有很多“研究努力的证据”。 如果你不想要,你不必再阅读。 我只是详细地指出,我已经尝试了你应该做的,我已经尝试了MSDN所说的,并且我已经尝试了互联网上任何地方的任何人都曾经提出的build议。
tl; dr: 预期的方式是什么?
背景
我正在testing将在Visual Studio 2013中开发的64位驱动程序部署到64位Windows机器上。 我想用Windows注册驱动程序服务,并启动它。
当path太长时,NSIS – EnvVarUpdate会覆盖系统path,是否有解决方法?
如何最小化Python中的特定窗口
如何知道我的Windows应用程序何时被终止?
在Windows中运行JavaScript
你有什么尝试
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 DefaultInstall节
安装testing证书
在testing计算机上安装testing证书
使用CertMgr在testing计算机上安装testing证书
Maven:找不到mvn命令
3.3.5更新后打开.py文件
用Python写入Vista的串口
在Windows上的Mongodb性能
C#循环来填充多个DataGridView
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。