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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Desactivar un adaptador de red desde C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Desactivar un adaptador de red desde C++  (Leído 6,897 veces)
el_doctor

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Desactivar un adaptador de red desde C++
« en: 17 Septiembre 2013, 19:06 pm »

Hola, existe alguna manera de desactivar las tarjetas de red desde una aplicación hecha en C++ he estado leyendo la documentación msdn y está la clase Win32_NetworkAdapter la he usado desde C# pero no me funciona no se si puedo usar esta clase en C++ y hacer que funcione o hay alguna otra forma de hacerlo desde C++.

Gracias por su ayuda


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Desactivar un adaptador de red desde C++
« Respuesta #1 en: 17 Septiembre 2013, 19:56 pm »

Si, por supuesto que se puede, busca informacion y ejemplos sobre WMI. Casi con toda seguridad todas esas clases terminan llamando a la API de Windows para implementar su funcionalidad ...


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
ecfisa

Desconectado Desconectado

Mensajes: 114


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

Hola.

Fijate si te sirve alguna de las opciónes de este enlace: Enabling and disabling interface/adapter.

Saludos. :)
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, 20:33 pm »

Gracias ecfisa lo voy a revisar.

Eternal no me dará problemas usar la clase Win32_NetworkAdapter en Windows8 ya que quiero que la aplicación funcione tanto en windows xq como windows 8
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Desactivar un adaptador de red desde C++
« Respuesta #4 en: 17 Septiembre 2013, 20:43 pm »

No tengo ni la mas minima idea sinceramente, fijate que dice su documentacion y de no servir en Windows 8 seguramente te dara la alternativa para ese S.O..
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
el_doctor

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Desactivar un adaptador de red desde C++
« Respuesta #5 en: 17 Septiembre 2013, 22:12 pm »

Hola Eternal estoy intentando usar la api Win32_NetworkAdapter y según estaba leyendo para usar las api hay que inicializar los servicios COM pero tengo ratos de estar rompiendome la cabeza para validar si se ejecuta bien la función CoInitializeEx según la documentación si todo sale bien devuelve S_OK y hago algo así:

Código
  1. if(CoInitializeEx(0, COINIT_MULTITHREADED) != S_OK)
  2. return NULL;

y al depurar siempre me da error de sintaxis en el if no se si es lo estresado que estoy pero no veo el error
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Desactivar un adaptador de red desde C++
« Respuesta #6 en: 17 Septiembre 2013, 22:36 pm »

Ese codigo compila, no se que estaras haciendo, asegurate que guardaste los cambios y de ultima recompila ... ni se que IDE usas asi que es dificil adivinar.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
el_doctor

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Desactivar un adaptador de red desde C++
« Respuesta #7 en: 17 Septiembre 2013, 22:56 pm »

Ya encontré el error era cosa del compilador gracias



Hola Eternal he revisado la documentación del enlace que puso el amigo ecfisa y según lo que ahí describen no es posible desconectar la tarjeta de red de forma real usando la api de windows y sugieren un método usando la interfaz de red shell copie el código e hice la implementación pero no me desconecta la tarjeta de red estoy usando windows 8 voy a poner el código, si me puedes ayudar te lo agradezco o no se si es verídica la información de ese enlace que explican que no es posible desconectar la tarjeta de red usando la api de windows.

Código
  1. bool DisableConecction(LPCWSTR nameConecction)
  2. {
  3.  
  4. bool result = false;
  5.  
  6. CoInitialize(0);
  7.  
  8. typedef void (_stdcall * LPNcFreeNetconProperties) (NETCON_PROPERTIES* pProps);
  9. HMODULE hmod = LoadLibrary(L"netshell.dll");
  10.  
  11. if(!hmod)
  12. return false;
  13.  
  14. LPNcFreeNetconProperties NcFreeNetconProperties =
  15.        (LPNcFreeNetconProperties)GetProcAddress(hmod, "NcFreeNetconProperties");
  16.  
  17. if(!NcFreeNetconProperties)
  18. return false;
  19.  
  20. INetConnectionManager * pMan = 0;
  21.  
  22.    HRESULT hres = CoCreateInstance(CLSID_ConnectionManager,
  23.                                    0,
  24.                                    CLSCTX_ALL,
  25.                                    __uuidof(INetConnectionManager),
  26.                                    (void**)&pMan);
  27.  
  28. if(SUCCEEDED(hres))
  29. {
  30. IEnumNetConnection * pEnum = 0;
  31.  
  32. hres = pMan->EnumConnections(NCME_DEFAULT, &pEnum);
  33.  
  34. if(SUCCEEDED(hres))
  35. {
  36. INetConnection * pCon = 0;
  37. ULONG count;
  38. bool done = false;
  39.  
  40. while(pEnum->Next(1, &pCon, &count) == S_OK && !done)
  41. {
  42. NETCON_PROPERTIES * pProps = 0;
  43.  
  44. hres = pCon->GetProperties(&pProps);
  45.  
  46. if(SUCCEEDED(hres))
  47. {
  48. if(wcscmp (pProps->pszwName, L"Ethernet") == 0) //Aqui lo puse estático ya que este es el nombre que tiene para mi computadora.
  49. {
  50. result = (pCon->Disconnect() == S_OK);
  51. done = true;
  52. }
  53. NcFreeNetconProperties (pProps);
  54. }
  55. pCon->Release();
  56. }
  57. pEnum->Release();
  58. }
  59. pMan->Release();
  60. }
  61. FreeLibrary(hmod);
  62.  
  63. CoUninitialize();
  64.  
  65. return result;
  66. }
« Última modificación: 18 Septiembre 2013, 09:05 am por Eternal Idol » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Desactivar un adaptador de red desde C++
« Respuesta #8 en: 18 Septiembre 2013, 09:11 am »

Sinceramente no se de donde sacas eso, se hace como dice ahi con la Device Installation API. Por logica ningun objeto COM va a poder hacer magia si el S.O. no le provee la funcionalidad ...
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
el_doctor

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Desactivar un adaptador de red desde C++
« Respuesta #9 en: 18 Septiembre 2013, 16:49 pm »

Hola Eternal pues he vuelto con lo de usar la Win API y pues según revisando la documentación de MSDN pues he implementado un código pero he quedado bloqueado para poder ejecutar el método Disable de la WIN32_NetworkAdapter que se supone es para desconectar la tarjeta de red, no se si una vez inicializado el COM y obtener los permisos debo recorrer la clase o como te agradecería si me ayudas te dejo el código que he escrito hasta ahora:

Código
  1. HRESULT hres;
  2.  
  3. //Initialize COM
  4.  
  5. if (CoInitializeEx(0, COINIT_MULTITHREADED) != S_OK)
  6. {
  7. CoUninitialize();
  8. return false;
  9. }
  10.  
  11. // Set general COM security levels --------------------------
  12.  
  13. if (CoInitializeSecurity (NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT,
  14. RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL) != S_OK)
  15. {
  16. CoUninitialize();
  17. return false;
  18. }
  19.  
  20. //Obtain the initial locator to WMI
  21.  
  22. IWbemLocator *pLoc = NULL;
  23.  
  24. if (CoCreateInstance (CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *) &pLoc) != S_OK)
  25. {
  26. CoUninitialize();
  27. return false;
  28. }
  29.  
  30. // Connect to WMI through the IWbemLocator::ConnectServer method
  31.  
  32. IWbemServices *pSvc = NULL;
  33.  
  34. hres = pLoc->ConnectServer (_bstr_t(L"ROOT\\CIMV2"), NULL, NULL, 0, NULL, 0, 0, &pSvc);
  35.  
  36. if (FAILED (hres))
  37. {
  38. pLoc->Release();
  39. CoUninitialize();
  40. return false;
  41. }
  42.  
  43. // Set security levels on the proxy
  44.  
  45. if (CoSetProxyBlanket (pSvc, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL, RPC_C_AUTHN_LEVEL_CALL,
  46. RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE) != S_OK)
  47. {
  48. pSvc->Release();
  49. pLoc->Release();
  50. CoUninitialize();
  51. return false;
  52. }
  53.  
  54. // set up to call the Win32_NetworkAdapter::Disable method
  55.  
  56. BSTR MethodName = SysAllocString (L"Disable");
  57. BSTR ClassName = SysAllocString (L"Win32_NetworkAdapter");
  58.  
  59. IWbemClassObject* pClass = NULL;
  60. hres = pSvc->GetObject (ClassName, 0, NULL, &pClass, NULL);
  61.  
  62. IWbemClassObject* pInParamsDefinition = NULL;
  63. hres = pClass->GetMethod (MethodName, 0, &pInParamsDefinition, NULL);
  64.  
  65.  
« Última modificación: 18 Septiembre 2013, 16:53 pm por el_doctor » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
forma de desactivar F8 desde VB « 1 2 3 »
Programación Visual Basic
abel_c_b 29 9,714 Último mensaje 31 Mayo 2008, 17:03 pm
por xavierote
Desactivar voltaje USB (planteamiento desde otro punto de vista)
Programación General
Haskell++ 2 3,666 Último mensaje 6 Septiembre 2012, 02:29 am
por sistemx
Se puede desactivar y activar esto desde mi programa ??? « 1 2 »
.NET (C#, VB.NET, ASP)
TrashAmbishion 17 9,101 Último mensaje 12 Diciembre 2012, 20:59 pm
por TrashAmbishion
Desactivar un adaptador de red desde C#
.NET (C#, VB.NET, ASP)
el_doctor 3 4,453 Último mensaje 17 Septiembre 2013, 19:31 pm
por el_doctor
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines