我可以通过 INF 部分卸载设备驱动程序吗?

我可以通过 INF 部分卸载设备驱动程序吗?

微软据称,在 Windows XP 或更高版本上安装 INF 文件有两种技术:

  • 通过 SetupCopyOEMInf 函数以编程方式进行。
  • 在 INF 部分添加一个名为 CopyInf 的条目。

在 inf 部分中是否有等效条目来卸载类似于的 inf 文件SetupUninstallOEMInf功能?

我找到了这个解决方案使用 SetupUninstallOEMInf 但对我来说它似乎不适合。

答案1

嗯,这取决于文件.inf(有些可能根本没有卸载功能),但您可以尝试以下方法之一:

rundll32 setupapi.dll,InstallHinfSection DefaultUninstall 132 <driver.inf>

rundll32 advpack.dll,LaunchINFSection <driver.inf>,UnInstall

rundll32 syssetup.dll,SetupInfObjectInstallAction Uninstall.NT 4 <driver.inf>

(当然,替换文件名,包括必要时的引号。)

答案2

否,驱动程序 INF 文件通常不包含卸载部分。根据如何从系统中删除 .inf 文件如何卸载设备和驱动程序包 | Microsoft DocsDiUninstallDeviceSetupUninstallOEMInf分别是卸载设备和驱动程序包的方法。

在控制台中,你可以使用以下命令调用后者devcon至少版本6(来自 Windows 8.x DDK;已确认可在 XP 中使用):

devcon [-f] dp_delete oemXXX.inf

-f即使驱动程序正在使用也强制卸载)

安装 DevCon.exe 的快速方法?如果您需要手动执行此操作,如何下载该实用程序。

从安装程序包中,您需要使用安装程序框架提供的工具来为您调用这些 API。

答案3

在我的例子中,rundll32 方法失败了,并且发现很难掌握 devcon.exe,所以我发现了另一种方法,按照建议从驱动程序存储区中删除驱动程序包。您基本上要做的就是在管理模式下打开 cmd-prompt 并发出以下命令:

C:\Windows\INF\>pnputil /delete-driver <example.inf> /uninstall

答案4

您可能最初不知道 OEM###.INF 文件名,但该名称是 Microsoft 对您安装的 INF 驱动程序的称呼。在注册表中查找您的实际 INF 文件名,并查看它对应的 OEM###.INF(将 ### 替换为注册表中显示的 3 位数字),然后您可以使用 pnputil /delete-driver OEM###.inf,您会注意到它在驱动程序存储库文件夹中找到两个副本并以正确的方式删除它们。这至少适用于 Windows 10 Pro 64 位,但我认为其他版本也适用。

相关内容