2008-10-30 64 views
13

有什么办法从C#.NET中禁用系统设备。如何禁用系统设备?

基本上模拟你何时去设备管理器并以这种方式禁用设备?

我假设有一个WinAPI函数可以调用,但我不知道它是哪一个?

我需要这样做的原因是我需要禁用并直接启用设备后再次。

我需要在Windows XP和Vista(x86 & x64)中工作。我看了一下名为“DevCon”的东西,但它似乎不适用于Vista x64。

谢谢。

要知道答案在这里看到:How do I disable a system device programatically?

回答

11

这篇文章在CodeProject都有达到这个一些真正漂亮的C#代码:

http://www.codeproject.com/KB/cs/HardwareHelper.aspx

最后,你只需拨打一个电话,如:

HH_Lib hwh = new HH_Lib(); 

hwh.SetDeviceState("MyDevice", /*Enable*/ true); 
hwh.SetDeviceState("MyDevice", /*Disable*/ false); 

alt text

+0

这不适用于Vista x64(请参阅我对问题的回复)。 谢谢。 – Cheetah 2008-11-03 01:40:11

9

为了进一步提高Mel Green的答案,硬件帮助程序库使用interop来调用Windows API(setupapi),特别是SetupDiSetClassInstallParams方法。当然这里还有其他的调用来查找设备的详细信息等。

有一件事要考虑,如果你是作为标准用户或非特权帐户运行,你将无法使用它来控制(启用/禁用等)硬件设备。

有关详细信息看看http://www.pinvoke.net(和具体电话:http://pinvoke.net/default.aspx/setupapi.SetupDiSetClassInstallParam

4

我知道这是一个老问题,但我碰到它同样的问题。为了解决这个问题,我必须使用TechNet wiki提供的新DevCon。 CodeProject文章很有帮助,但最终只依靠更新的DevCon更容易。不幸的是,它似乎只在Windows Driver Kit,这是超过600MB。