如何使用C#卸载USB设备

5
请帮助我在Windows操作系统中卸载USB设备。当我的一个USB从笔记本电脑中拔出后,我的Windows操作系统会记住有一个USB已经添加到了我的电脑上,现在我想卸载它。
就像usbdeview软件中的“卸载选定设备”模块一样。 这是该软件的链接:http://www.nirsoft.net/utils/usb_devices_view.html
2个回答

5

Devcon

通过使用名为devcon的命令行工具,我成功地使其在代码中调用。

将devcon.exe放入系统路径之一,以便在任何地方都可以使用它。

Devcon: devcon

调用:DEVCON Remove usb"MI_01"

然后调用:DEVCON rescan

代码:

System.Diagnostics.Process proc = new System.Diagnostics.Process();
 proc.StartInfo.FileName = "DEVCON";
 proc.StartInfo.Arguments = "Remove *usb"*MI_01";
 proc.StartInfo.RedirectStandardError = true;
 proc.StartInfo.RedirectStandardOutput = true;
 proc.StartInfo.UseShellExecute = false;
 proc.Start();

非常感谢Devcon,但我想卸载设备USB,而不是删除。 - fox

4
如果您正在寻找一种清除驱动程序的工具,我不认为这是询问的正确场所,也许可以去超级用户网站。如果你想要从代码中自己卸载驱动程序,我不认为在.net框架中有一个类可以卸载驱动程序。但是,仍然可以使用C#完成此操作。您可以通过Win32 API函数DiUninstallDevice来实现,它是一种本地调用,API是用C编写的。您需要编写一个包装器,并使用P/Invoke从.net中调用它。通常,当Windows OS通知您USB设备已断开连接时,您应该扫描驱动程序树,确定您的驱动程序,然后使用上述函数调用删除您的驱动程序。
无论如何,您的Windows主机都会记住使用PID(产品ID)、VID(供应商ID)和USB设备的序列号。因此,当您的设备再次插入时,它将自动使用这些参数识别USB设备并搜索驱动程序(当然,如果过去已经安装了驱动程序)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接