2008-10-30 8 views
13

¿Hay alguna forma de deshabilitar un dispositivo de sistema de C# .NET.¿Cómo desactivo un dispositivo del sistema?

Emulando básicamente cuando va al Administrador de dispositivos y deshabilita un dispositivo de esa manera?

Supongo que hay una función de WinAPI que puedo invocar, pero no sé cuál es?

La razón por la que tengo que hacer esto es porque necesito deshabilitarlo y luego de habilitar nuevamente el dispositivo.

Necesito trabajar en Windows XP y Vista (x86 & x64). Eché un vistazo a algo llamado "DevCon", pero parece que no funciona en Vista x64.

Gracias.

Para la respuesta ver aquí: How do I disable a system device programatically?

Respuesta

11

este artículo en CodeProject tiene algo de código C# muy ingenioso para lograr esto:

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

Al final sólo tiene que hacer una llamada como :

HH_Lib hwh = new HH_Lib(); 

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

alt text

+0

Esto no funciona para Vista x64 (ver mi respuesta a la pregunta). Gracias. – Cheetah

+0

No funciona para Server 2008 x86 tampoco –

9

Para la respuesta de Mel Green, la biblioteca de hardware auxiliar utiliza interoperabilidad para llamar a la API de Windows (setupapi), específicamente el método SetupDiSetClassInstallParams. Por supuesto, hay otras llamadas aquí que se utilizan para buscar los detalles del dispositivo, etc.

Una cosa a considerar es que si se está ejecutando como un usuario estándar o una cuenta sin privilegios no podrá usar esto para controlar (habilitar/disable etc) dispositivos de hardware.

Para más detalles echar un vistazo a http://www.pinvoke.net (y para la llamada específica: http://pinvoke.net/default.aspx/setupapi.SetupDiSetClassInstallParam)

4

Sé que esto es una vieja pregunta, pero me encontré con el mismo problema. Para resolverlo, tuve que usar la nueva DevCon disponible en el TechNet wiki. El artículo de CodeProject fue útil, pero al final fue más fácil confiar solo en DevCon actualizado. Lamentablemente, parece que solo está disponible en el Windows Driver Kit que supera los 600mb.

Cuestiones relacionadas