在 Windows 10 Professional 中安装自定义 inf 时遇到问题。 Windows 用 OEM 驱动程序覆盖它
Trouble installing custom inf in Windows 10 Professional. Windows overrides it with OEM driver
我已经为自定义设备创建了一个签名的 USB 串行 inf 文件,并创建了一个安装程序,该安装程序成功地将驱动程序安装到 Windows 7 (32/64)、Windows 8.1 (64) 但是not Windows 10. 这适用于直接在文件上使用设备管理器和使用 PNPUTIL 的默认安装(右键单击,安装)。设备驱动程序安装成功,但使用的是 OEM usbser 驱动程序。单击 "Update Driver" 并在设备管理器中选择我的驱动程序后,Windows 提示我 "The best driver software is already installed for your device"。如果我使用设备管理器并选择 "Have Disk" 我可以成功解决 Windows 10 强制执行他们自己的驱动程序的问题。不过,这并没有让我离成功的 inf 文件和安装程序更近一步。
我的默认安装过程:
- 从 USB 端口拔下设备
- 加载新安装的快照 Windows 10 Professional
- 右击,在.inf文件上安装
- 插入设备
- 查看设备管理器,发现使用的是微软的标准 USB 串行设备驱动程序,而不是我的驱动程序
如果我随后将其卸载并重复步骤 3-5,它有时会保留我的自定义驱动程序。
有人告诉我我的驱动程序安装在 Windows 10 Enterprise 上,这进一步混淆了问题。
问题:我做错了什么?
我的inf文件:
;************************************************************
; Windows USB CDC ACM Setup File
; Copyright (c) 2000 Microsoft Corporation
; Version v1.1, updated 17 April 2013
[Strings]
DriverPackageDisplayName="Rinstrum USB Serial Drivers"
ManufacturerName="Rinstrum"
ServiceName="USB RS-232 Emulation Driver"
linux.gserial="Rinstrum USB Gadget Serial"
MFGNAME="Rinstrum"
[DefaultInstall]
CopyINF=c500.inf
[Version]
DriverVer=03/02/2017,1.0.0.0
Signature=$Windows NT$
Class=Ports
ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
Provider=%MFGNAME%
CatalogFile=c500.cat
DriverPackageDisplayName=%DriverPackageDisplayName%
PnpLockdown=1
[Manufacturer]
%MFGNAME%=Models,NTx86,NTamd64,NTarm
[DestinationDirs]
DefaultDestDir=12
FakeModemCopyFileSection=12
[Models.NTx86]
%linux.gserial%=DriverInstall, USB\VID_1FC9&PID_816A, USB\VID_1FC9&PID_816A&MI_00
[Models.NTamd64]
%linux.gserial%=DriverInstall, USB\VID_1FC9&PID_816A, USB\VID_1FC9&PID_816A&MI_00
[Models.NTarm]
%linux.gserial%=DriverInstall, USB\VID_1FC9&PID_816A, USB\VID_1FC9&PID_816A&MI_00
[DriverInstall]
Include=mdmcpq.inf
CopyFiles=FakeModemCopyFileSection
AddReg=DriverAddReg
[DriverAddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,%DRIVERFILENAME%.sys
HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
[DriverInstall.Services]
Include=mdmcpq.inf
AddService=usbser,0x2,DriverService
[DriverService]
DisplayName=%ServiceName%
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%12%\usbser.sys
LoadOrderGroup=Base
更新:来自 setupapi.dev.log
的附加信息
>>> [Device Install (DiInstallDriver) - C:\Users\R&D\Desktop\c500.inf]
>>> Section start 2017/02/03 17:17:58.321
cmd: "C:\Windows\System32\InfDefaultInstall.exe" "C:\Users\R&D\Desktop\c500.inf"
ndv: Flags: 0x00000000
ndv: INF path: C:\Users\R&D\Desktop\c500.inf
inf: {SetupCopyOEMInf: C:\Users\R&D\Desktop\c500.inf} 17:17:58.337
inf: Copy style: 0x00000000 !
inf: Driver package is already in driver store
inf: Driver Store Path: C:\Windows\System32\DriverStore\FileRepository\c500.inf_amd64_4fee793fb11027ac\c500.inf inf: Published Inf Path: C:\Windows\INF\oem4.inf
inf: {SetupCopyOEMInf exit (0x00000000)} 17:17:58.368
<<< Section end 2017/02/03 17:17:58.399
<<< [Exit status: SUCCESS]
更新:
setupapi.dev.log 尝试安装设备时出现以下错误
sig: Success: File is signed in Authenticode(tm) catalog.
sig: Error 0xe0000242: The publisher of an Authenticode(tm) signed catalog has not yet been established as trusted.
更新:
VBox 来宾添加安装程序设法在 WIN10 中安装我的 inf 文件。这是来源:
尝试使用今天的日期和 1.0.0.0 正确设置您的 DriverVer
指令。在决定使用哪个驱动程序时,日期是 Windows 考虑的一件事。
Windows 需要在授予用户覆盖 Windows 中的 OEM 驱动程序的权限之前激活 10. 在我的测试机器上激活 windows 解决了这个问题。
我已经为自定义设备创建了一个签名的 USB 串行 inf 文件,并创建了一个安装程序,该安装程序成功地将驱动程序安装到 Windows 7 (32/64)、Windows 8.1 (64) 但是not Windows 10. 这适用于直接在文件上使用设备管理器和使用 PNPUTIL 的默认安装(右键单击,安装)。设备驱动程序安装成功,但使用的是 OEM usbser 驱动程序。单击 "Update Driver" 并在设备管理器中选择我的驱动程序后,Windows 提示我 "The best driver software is already installed for your device"。如果我使用设备管理器并选择 "Have Disk" 我可以成功解决 Windows 10 强制执行他们自己的驱动程序的问题。不过,这并没有让我离成功的 inf 文件和安装程序更近一步。
我的默认安装过程:
- 从 USB 端口拔下设备
- 加载新安装的快照 Windows 10 Professional
- 右击,在.inf文件上安装
- 插入设备
- 查看设备管理器,发现使用的是微软的标准 USB 串行设备驱动程序,而不是我的驱动程序
如果我随后将其卸载并重复步骤 3-5,它有时会保留我的自定义驱动程序。
有人告诉我我的驱动程序安装在 Windows 10 Enterprise 上,这进一步混淆了问题。
问题:我做错了什么?
我的inf文件:
;************************************************************
; Windows USB CDC ACM Setup File
; Copyright (c) 2000 Microsoft Corporation
; Version v1.1, updated 17 April 2013
[Strings]
DriverPackageDisplayName="Rinstrum USB Serial Drivers"
ManufacturerName="Rinstrum"
ServiceName="USB RS-232 Emulation Driver"
linux.gserial="Rinstrum USB Gadget Serial"
MFGNAME="Rinstrum"
[DefaultInstall]
CopyINF=c500.inf
[Version]
DriverVer=03/02/2017,1.0.0.0
Signature=$Windows NT$
Class=Ports
ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
Provider=%MFGNAME%
CatalogFile=c500.cat
DriverPackageDisplayName=%DriverPackageDisplayName%
PnpLockdown=1
[Manufacturer]
%MFGNAME%=Models,NTx86,NTamd64,NTarm
[DestinationDirs]
DefaultDestDir=12
FakeModemCopyFileSection=12
[Models.NTx86]
%linux.gserial%=DriverInstall, USB\VID_1FC9&PID_816A, USB\VID_1FC9&PID_816A&MI_00
[Models.NTamd64]
%linux.gserial%=DriverInstall, USB\VID_1FC9&PID_816A, USB\VID_1FC9&PID_816A&MI_00
[Models.NTarm]
%linux.gserial%=DriverInstall, USB\VID_1FC9&PID_816A, USB\VID_1FC9&PID_816A&MI_00
[DriverInstall]
Include=mdmcpq.inf
CopyFiles=FakeModemCopyFileSection
AddReg=DriverAddReg
[DriverAddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,%DRIVERFILENAME%.sys
HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
[DriverInstall.Services]
Include=mdmcpq.inf
AddService=usbser,0x2,DriverService
[DriverService]
DisplayName=%ServiceName%
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%12%\usbser.sys
LoadOrderGroup=Base
更新:来自 setupapi.dev.log
的附加信息>>> [Device Install (DiInstallDriver) - C:\Users\R&D\Desktop\c500.inf]
>>> Section start 2017/02/03 17:17:58.321
cmd: "C:\Windows\System32\InfDefaultInstall.exe" "C:\Users\R&D\Desktop\c500.inf"
ndv: Flags: 0x00000000
ndv: INF path: C:\Users\R&D\Desktop\c500.inf
inf: {SetupCopyOEMInf: C:\Users\R&D\Desktop\c500.inf} 17:17:58.337
inf: Copy style: 0x00000000 !
inf: Driver package is already in driver store
inf: Driver Store Path: C:\Windows\System32\DriverStore\FileRepository\c500.inf_amd64_4fee793fb11027ac\c500.inf inf: Published Inf Path: C:\Windows\INF\oem4.inf
inf: {SetupCopyOEMInf exit (0x00000000)} 17:17:58.368
<<< Section end 2017/02/03 17:17:58.399
<<< [Exit status: SUCCESS]
更新: setupapi.dev.log 尝试安装设备时出现以下错误
sig: Success: File is signed in Authenticode(tm) catalog.
sig: Error 0xe0000242: The publisher of an Authenticode(tm) signed catalog has not yet been established as trusted.
更新: VBox 来宾添加安装程序设法在 WIN10 中安装我的 inf 文件。这是来源:
尝试使用今天的日期和 1.0.0.0 正确设置您的 DriverVer
指令。在决定使用哪个驱动程序时,日期是 Windows 考虑的一件事。
Windows 需要在授予用户覆盖 Windows 中的 OEM 驱动程序的权限之前激活 10. 在我的测试机器上激活 windows 解决了这个问题。