如何使用c#卸载usb设备

时间:2012-11-19 03:39:36

标签: c# usb device uninstall

请帮我在windows os中卸载usb设备。当我的笔记本电脑中有一个我的USB被移除时,我的窗口记得在我的笔记本电脑中添加了一个USB,现在我想卸载它。

与模块“卸载所选设备”中的usbdeview软件类似。 这是这个软的链接:http://www.nirsoft.net/utils/usb_devices_view.html

2 个答案:

答案 0 :(得分:1)

首先,如果您正在搜索清除驱动程序的实用程序,我不认为这是要求的地方,也许是超级用户。

如果您想从代码中自行卸载驱动程序,我认为您在.net框架中没有类来卸载驱动程序。但是,仍然可以使用C#完成。你有一个Win32 API函数:DiUninstallDevice它是一个本机调用和它在C中的API。你必须编写一个包装器并使用P / Invoke从.net调用它。

一般逻辑是这样的:当Windows操作系统通知您USB设备已断开连接时,您应扫描驱动程序树,识别驱动程序,然后使用上述函数调用删除驱动程序。

无论如何,您的Windows主机会记住使用您的USB设备的PID(产品ID),VID(供应商ID)和序列号的设备。因此,当您的设备再次插入时,它将使用这些参数自动识别USB设备并搜索驱动程序(当然,如果过去已安装过该驱动程序)。

答案 1 :(得分:1)

Devcon

通过使用名为devcon的命令行工具来实现它,然后我从代码中调用它。

将devcon.exe删除到其中一个系统路径中,以便它可以在任何地方使用。

Devcon:devcon

调用:DEVCON删除usb“MI_01”

然后调用:DEVCON重新扫描

代码:

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();