elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Desactivar un adaptador de red desde C#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Desactivar un adaptador de red desde C#  (Leído 4,454 veces)
el_doctor

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Desactivar un adaptador de red desde C#
« en: 16 Septiembre 2013, 23:37 pm »

Saludos, estoy intentando desactivar la tarjeta de red usando una aplicación en C# pero no se si lo he hecho bien o me falta algo ya que al ejecutar el programa no me desactiva la tarjeta de red, estoy usando la clase Win32_NetworkAdapter y mi función queda así:

Código
  1. private void DisableNetworkByAdapterType(string adapterType)
  2.        {
  3.  
  4.            var query = new SelectQuery("Win32_NetworkAdapter",
  5.                                        "NetConnectionStatus=2 and AdapterType='" + adapterType + "'");
  6.  
  7.            var searcher = new ManagementObjectSearcher(query);
  8.  
  9.            foreach (ManagementObject result in searcher.Get())
  10.            {
  11.                result.InvokeMethod("Disable", null);
  12.            }
  13.        }

nota: el parámetro adapterType yo le mando "Ethernet 802.3"


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Desactivar un adaptador de red desde C#
« Respuesta #1 en: 17 Septiembre 2013, 06:31 am »

Citar
Código
  1. "NetConnectionStatus=2 and AdapterType='" + adapterType + "'")

Debes especificar el keyword "WHERE", y luego concatenar con "AND".

Código
  1. "WHERE NetConnectionStatus='2' and AdapterType='" + adapterType + "'")

Por lo demás lo veo bien, si estás usando Windows 8 entonces deberías usar la Class MSFT_NetAdapter.

Te muestro como lo hice en VB.NET:



Código
  1.        Dim QueryFormat As String = _
  2.            String.Format( _
  3.            "SELECT {0} FROM Win32_NetworkAdapter WHERE AdapterType = '{1}' And NetConnectionStatus = '{2}'", _
  4.            "AdapterType,NetConnectionID,NetConnectionStatus", _
  5.            "Ethernet 802.3", _
  6.            "2" _
  7.            )
  8.  
  9.        Dim Query As New ObjectQuery(QueryFormat)
  10.        Dim Searcher As New ManagementObjectSearcher(Query)
  11.  
  12.        For Each result As ManagementObject In Searcher.Get
  13.  
  14.  
  15.            MsgBox(String.Format(" NetConnectionID: {1}{0} NetConnectionStatus: {2}{0} AdapterType: {3}{0}", _
  16.                                 Environment.NewLine & Environment.NewLine, _
  17.                                 result.Item("NetConnectionID"), _
  18.                                 result.Item("NetConnectionStatus"), _
  19.                                 result.Item("AdapterType")))
  20.  
  21.            Try
  22.                result.InvokeMethod("Disable", Nothing)
  23.            Catch ex As Exception
  24.                MessageBox.Show(ex.Message)
  25.            End Try
  26.  
  27.        Next



Traducción a C# (No lo he testeado):

Código
  1. string QueryFormat = string.Format("SELECT {0} FROM Win32_NetworkAdapter WHERE AdapterType = '{1}' And NetConnectionStatus = '{2}'", "AdapterType,NetConnectionID,NetConnectionStatus", "Ethernet 802.3", "2");
  2.  
  3. ObjectQuery Query = new ObjectQuery(QueryFormat);
  4. ManagementObjectSearcher Searcher = new ManagementObjectSearcher(Query);
  5.  
  6.  
  7. foreach (ManagementObject result in Searcher.Get) {
  8.  
  9. Interaction.MsgBox(string.Format(" NetConnectionID: {1}{0} NetConnectionStatus: {2}{0} AdapterType: {3}{0}", Environment.NewLine + Environment.NewLine, result.Item("NetConnectionID"), result.Item("NetConnectionStatus"), result.Item("AdapterType")));
  10.  
  11. try {
  12. result.InvokeMethod("Disable", null);
  13. } catch (Exception ex) {
  14. MessageBox.Show(ex.Message);
  15. }
  16.  
  17. }
  18.  
  19. //=======================================================
  20. //Service provided by Telerik (www.telerik.com)
  21. //Conversion powered by NRefactory.
  22. //Twitter: @telerik
  23. //Facebook: facebook.com/telerik
  24. //=======================================================


Saludos!


« Última modificación: 17 Septiembre 2013, 07:08 am por EleKtro H@cker » En línea



el_doctor

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Desactivar un adaptador de red desde C#
« Respuesta #2 en: 17 Septiembre 2013, 15:50 pm »

Saludos gracias por tu observación Elecktro pero el problema no está en la consulta, ya que estoy usando SelectQuery este método acepta dos parámetros que son la clase que vas usar y la condición y por defecto el agrega a la consulta la instrucción Select * y Where si agregas where dentro del parámetro de condición te da un error en la consulta.

Referente a la clase que estoy usando uso la "Win32_NetworkAdapter" porque quiero que funcione tanto para windows xp como con windows 8 aunque estoy haciendo las pruebas con windows 8 no se si eso tiene que ver yo entendería que a pesar de ser obsoleta la clase puede funcionar en windows 8 pero tengo mis dudas en eso, o no se si es problemas de privilegios de administrador.
En línea

el_doctor

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Desactivar un adaptador de red desde C#
« Respuesta #3 en: 17 Septiembre 2013, 19:31 pm »

He intentado utilizar la clase MSFT_NetAdapter para ver si es problema de la versión de Windows ya que estoy usando windows 8 lo he implementado igual que la clase "Win32_NetworkAdapter" pero en el foreach me da un error y me dice clase no válida alguien me puede decir por que el error? o es que en esta clase hay que hacerlo de otra forma, el código de la implementación es el siguiente:

Código
  1. const string adapterType = "802.3";
  2. var query = new SelectQuery("MSFT_NetAdapter", "State=2 and NdisMedium='" + adapterType + "'");
  3.  
  4.            var searcher = new ManagementObjectSearcher(query);
  5.  
  6.            foreach (ManagementObject result in searcher.Get())
  7.            {
  8.                var state = result["State"];
  9.                var ndisMedium = result["NdisMedium"];
  10.                result.InvokeMethod("Disable", null);
  11.                result.InvokeMethod("Lock", null);
  12.  
  13.            }

Si alguien puede ayudarme se los agradezco
« Última modificación: 17 Septiembre 2013, 19:34 pm por el_doctor » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines