【问题标题】:Need to completely remove a device driver in windows 7需要在 Windows 7 中完全删除设备驱动程序
【发布时间】:2013-11-10 06:37:23
【问题描述】:

我有一个 Windows 7 无法识别的旧 USB 设备,因此我获取了处理 USB 通信的芯片的设备驱动程序。在我修改它之后,我用它来安装设备。我知道这很愚蠢,但现在我需要摆脱它。

以下是 inf 安装文件中的代码。这没有我更改的 VID 和 PID。我需要扭转它所做的所有改变。

; Installation INF for the Cypress Generic USB Driver for Windows Vista
; Processor support for OS unknown platforms.
;
; (c) Copyright 2010 Cypress Semiconductor Corporation
;

[Version]
Signature="$WINDOWS NT$"
Class=USB
ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
provider=%CYUSB_Provider%
CatalogFile=CYUSB.cat
DriverVer=10/12/2010,3.4.4.000

[SourceDisksNames]
1=%CYUSB_Install%,,,

[SourceDisksFiles]
CYUSB.sys = 1

[DestinationDirs]
CYUSB.Files.Ext = 10,System32\Drivers

[ControlFlags]
ExcludeFromSelect = *

[Manufacturer]
%CYUSB_Provider%=Device,NT,NTx86,NTamd64

;for all platforms
[Device]
;%VID_XXXX&PID_XXXX.DeviceDesc%=CyUsb, USB\VID_XXXX&PID_XXXX


;for windows 2000 non intel platforms
[Device.NT]
; Cypress FX2LP default ID
%VID_04B4&PID_8613.DeviceDesc%=CyUsb, USB\VID_04B4&PID_8613

; Cypress FX1 default ID
%VID_04B4&PID_6473.DeviceDesc%=CyUsb, USB\VID_04B4&PID_6473

; Cypress Streamer Device.  CyStream firmware examples use this VID/PID
%VID_04B4&PID_1003.DeviceDesc%=CyUsb, USB\VID_04B4&PID_1003

; Cypress FX2LP Example Device.  DVK firmware examples use this VID/PID
%VID_04B4&PID_1004.DeviceDesc%=CyUsb, USB\VID_04B4&PID_1004


;for x86 platforms
[Device.NTx86]
; Cypress FX2LP default ID
%VID_04B4&PID_8613.DeviceDesc%=CyUsb, USB\VID_04B4&PID_8613

; Cypress FX1 default ID
%VID_04B4&PID_6473.DeviceDesc%=CyUsb, USB\VID_04B4&PID_6473


; Cypress Streamer Device.  CyStream firmware examples use this VID/PID
%VID_04B4&PID_1003.DeviceDesc%=CyUsb, USB\VID_04B4&PID_1003

; Cypress FX2LP Example Device.  DVK firmware examples use this VID/PID
%VID_04B4&PID_1004.DeviceDesc%=CyUsb, USB\VID_04B4&PID_1004


;for x64 platforms
[Device.NTamd64]
; Cypress FX2LP default ID
%VID_04B4&PID_8613.DeviceDesc%=CyUsb, USB\VID_04B4&PID_8613

; Cypress FX1 default ID
%VID_04B4&PID_6473.DeviceDesc%=CyUsb, USB\VID_04B4&PID_6473

; Cypress Streamer Device.  CyStream firmware examples use this VID/PID
%VID_04B4&PID_1003.DeviceDesc%=CyUsb, USB\VID_04B4&PID_1003

; Cypress FX2LP Example Device.  DVK firmware examples use this VID/PID
%VID_04B4&PID_1004.DeviceDesc%=CyUsb, USB\VID_04B4&PID_1004

[CYUSB]
CopyFiles=CYUSB.Files.Ext
AddReg=CyUsb.AddReg

[CYUSB.HW]
AddReg=CYUSB.AddReg.Guid

[CYUSB.Services]
Addservice = CYUSB,2,CYUSB.AddService

[CYUSB.NT]
CopyFiles=CYUSB.Files.Ext
AddReg=CyUsb.AddReg

[CYUSB.NT.HW]
AddReg=CYUSB.AddReg.Guid

[CYUSB.NT.Services]
Addservice = CYUSB,2,CYUSB.AddService


[CYUSB.NTx86]
CopyFiles=CYUSB.Files.Ext
AddReg=CyUsb.AddReg

[CYUSB.NTx86.HW]
AddReg=CYUSB.AddReg.Guid

[CYUSB.NTx86.Services]
Addservice = CYUSB,2,CYUSB.AddService

[CYUSB.NTamd64]
CopyFiles=CYUSB.Files.Ext
AddReg=CyUsb.AddReg

[CYUSB.NTamd64.HW]
AddReg=CYUSB.AddReg.Guid

[CYUSB.NTamd64.Services]
Addservice = CYUSB,2,CYUSB.AddService


[CYUSB.AddReg]
; Deprecating - do not use in new apps to identify a CYUSB driver
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,CYUSB.sys
; You may optionally include a check for DriverBase in your application to check for a CYUSB driver
HKR,,DriverBase,,CYUSB.sys
HKR,"Parameters","MaximumTransferSize",0x10001,4096
HKR,"Parameters","DebugLevel",0x10001,2
HKR,,FriendlyName,,%CYUSB_Description%

[CYUSB.AddService]
DisplayName    = %CYUSB_Description%
ServiceType    = 1                  ; SERVICE_KERNEL_DRIVER
StartType      = 3                  ; SERVICE_DEMAND_START
ErrorControl   = 1                  ; SERVICE_ERROR_NORMAL
ServiceBinary  = %10%\System32\Drivers\CYUSB.sys
AddReg         = CYUSB.AddReg
LoadOrderGroup = Base

[CYUSB.Files.Ext]
CYUSB.sys

[CYUSB.AddReg.Guid]
HKR,,DriverGUID,,%CYUSB.GUID%

[Strings]
CYUSB_Provider    = "Cypress"
CYUSB_Company     = "Cypress Semiconductor Corporation"
CYUSB_Description = "Cypress Generic USB Driver"
CYUSB_DisplayName = "Cypress USB Generic"
CYUSB_Install     = "Cypress CYUSB Driver Installation Disk"
VID_04B4&PID_8613.DeviceDesc="Cypress EZ-USB FX2LP No EEPROM"
VID_04B4&PID_6473.DeviceDesc="Cypress EZ-USB FX1 - No EEPROM"
VID_04B4&PID_1004.DeviceDesc="Cypress EZ-USB Example Device"
VID_04B4&PID_1003.DeviceDesc="Cypress EZ-USB Streamer Device"
VID_XXXX&PID_XXXX.DeviceDesc="Cypress USB Generic Driver (3.4.4.000)"
CYUSB.GUID="{AE18AA60-7F6A-11d4-97DD-00010229B959}"
CYUSB_Unused      = "."

【问题讨论】:

    标签: windows windows-7 usb driver inf


    【解决方案1】:

    另一种选择(微软的方式,不在注册表中进行随机未知删除)是以“以管理员身份运行”启动 CMD,然后通过以下方式在 Windows 7 驱动程序存储中列出所有已安装的驱动程序:

    pnputil -e

    如果这导致列表较长,您可以通过以下方式将其通过管道传输到文件中:

    pnputil -e > C:\driverexport.txt

    如果您现在找到了需要删除的驱动程序,请使用以下命令:

    pnputil.exe -d OemNUMBER.inf

    将 NUMBER 替换为您示例中的号码。您可以尝试使用 -F 强制卸载。重新启动完成后,驱动程序应该消失了。

    这也可能有助于删除旧驱动程序并恢复一些 HD 空间。

    Source

    【讨论】:

    • Pnputil 记录在这里:msdn.microsoft.com/en-us/library/windows/hardware/… 该页面说它随 Windows 一起提供,从 Vista 开始。
    • 确定它与 Windows 兼容,否则我会在这里提到下载。但是,上面的内容是从我在底部提到的源 URL 复制和粘贴的。
    • 如果是打印机驱动程序,这可能不起作用。但是您可以转到打印服务器属性并在那里删除驱动程序。
    • 找到 oem.inf 文件名的更简单(并且可能更不容易出错)的方法是进入 设备管理器,右键单击设备,转到Properties,然后是 Details 选项卡,然后从下拉列表中选择 INF 名称。尽管此时您不妨使用下面 Preston 描述的过程。
    • 不错且有用的答案!
    【解决方案2】:

    如果您已经为设备安装了驱动程序并且想要删除它(以及驱动程序存储),只需插入您的设备即可。打开设备管理器,右键单击设备并选择卸载。将出现一个“删除驱动程序软件”框 - 选中此框并卸载驱动程序。这应该将其从驱动程序存储中删除并从注册表中卸载设备。

    如果设备的所有驱动程序都已删除,您应该能够将其插入并看到没有为设备加载驱动程序。如果是这样,您的驱动程序商店中可能有多个版本,您需要执行相同的步骤,直到 Windows 无法识别该设备。

    请注意,根据策略,SYS 文件将保留在 C:\Windows\System32\drivers 目录中,但如果删除了所有使用它的设备和安装,您也可以安全地删除此驱动程序。

    【讨论】:

    • 必须禁用(或未插入)设备才能显示“删除驱动程序软件”复选框。
    • @Origin 在我使用 winusb.sys 和 usbser.sys 驱动程序的经验中,这不是真的。
    • 我怀疑当您删除使用特定驱动程序的最终设备实例时,会出现“删除驱动程序软件”复选框。我有两个使用相同驱动程序的设备。只有在卸载第二台设备后,我才会看到该复选框。还有人知道吗?
    • @mitch,这是正确的 - 它不会显示允许您删除驱动程序的复选框,除非它是正在删除的最后一个使用它的设备。
    【解决方案3】:

    虽然上面答案中提到的步骤可能是正确的,但这是一种更简单的方法:

    转到设备管理器或运行命令

    devmgmt.msc

    右键单击您需要卸载的设备并转到属性。选择Details选项卡,然后从下拉列表中选择INF Name

    一旦您在以管理员权限打开的命令窗口中输入此命令中的 INF 名称

    pnputil.exe -d INFName.inf

    如果您遇到问题,请尝试强制删除

    pnputil.exe -f -d INFName.inf

    【讨论】:

    • 这里要注意一点,像这样可以删除的inf是第三方inf,名字是oemX.inf,其中X是整数,其他inf都会失效
    猜你喜欢
    • 2013-07-01
    • 1970-01-01
    • 2011-12-02
    • 2016-08-19
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多