如何禁用系统设备?

时间:2008-10-30 23:54:52

标签: c# .net operating-system device

有没有办法从C#.NET禁用系统设备。

当您转到设备管理器并以此方式禁用设备时,基本上是模拟的吗?

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

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

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

感谢。

有关答案,请参阅此处:How do I disable a system device programatically?

3 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:9)

对于Mel Green的回答,硬件帮助程序库使用interop来调用Windows API(setupapi),特别是SetupDiSetClassInstallParams方法。当然,此处还有其他调用用于查找设备详细信息等。

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

有关详细信息,请查看http://www.pinvoke.net(以及特定来电:http://pinvoke.net/default.aspx/setupapi.SetupDiSetClassInstallParam

答案 2 :(得分:4)

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