msproys

Microsoft también se despide de WMIC


¿WMIC, qué es eso?, hola a todos, sean bienvenidos a esta nueva publicación donde daremos respuesta a esta duda. WMIC (Windows Management Instrumentation Command-line), es una utilidad de comandos presentada con Windows XP (fuente Computer Hoy).

  Esta herramienta permite a administradores, programadores y usuarios en general consultar y gestionar distintos componentes de hardware y software mediante la consola de comandos. Esto es estupendo pues sin necesidad de apis especiales podríamos desde la consola de comandos lanzar una consola oculta, obtener los resultados y procesarlos en nuestra aplicación. Ejemplo:


Imports System.Diagnostics
Imports System.IO

Module Module1
    Sub Main()
        Console.WriteLine("Consultando detalles de la red activa mediante WMIC...")

        ' Configurar el proceso para ejecutar WMIC
        Dim psi As New ProcessStartInfo()
        psi.FileName = "wmic.exe"
        
        ' Comando WMIC para traer tarjetas activas (NetConnectionStatus=2)
        ' Recupera: Nombre de la conexión, Nombre del hardware, Dirección MAC y Velocidad
        psi.Arguments = "path Win32_NetworkAdapter where ""NetConnectionStatus=2"" get NetConnectionID, Name, MACAddress, Speed"
        
        psi.RedirectStandardOutput = True
        psi.UseShellExecute = False
        psi.CreateNoWindow = True

        Try
            Using p As Process = Process.Start(psi)
                Using reader As StreamReader = p.StandardOutput
                    Dim resultado As String = reader.ReadToEnd()
                    
                    If String.IsNullOrWhiteSpace(resultado) OrElse resultado.Contains("No se encontraron instancias") Then
                        Console.WriteLine("No se detectó ninguna interfaz de red activa.")
                    Else
                        Console.WriteLine("Resultados de WMIC:")
                        Console.WriteLine(resultado)
                    End If
                End Using
            End Using
        Catch ex As Exception
            Console.WriteLine($"Error al ejecutar WMIC: {ex.Message}")
        End Try

        Console.WriteLine("Presiona cualquier tecla para salir.")
        Console.ReadKey()
    End Sub
End Module

Esto daría la siguiente salida (solo es un ejemplo):

Consultando detalles de la red activa mediante WMIC...
Resultados de WMIC:

MACAddress         Name                                          NetConnectionID  Speed
E4:XX:71:XX:C3:XX  Intel(R) Wi-Fi 6E AX211 160MHz                Wi-Fi            866700000

Presiona cualquier tecla para salir.

  Como vemos, podríamos obtener datos del hardware sin tener que instalar nada adicional, más que habilitar los componentes para poder usarlos desde Visual Studio o SharpDevelop (ya instalados con Windows) y comenzar a usarlos dentro de nuestro programa. Luego, la salida la podemos procesar y usarla en nuestro software que estemos desarrollando.

Microsoft jubila a WMIC:

  "¿Por qué Microsoft ha decidido descontinuar a WMIC si es tan útil?", bueno, si por algo es conocido Windows es por sus eternos fallos de seguridad: durante los 90's y parte del 2000 antes de que Windows XP se estableciera como el sistema operativo dominante, malwares de todo tipo abusaban del archivo autoexec.bat y otras vulnerabilidades del mundo MS-DOS; con la llegada de Windows XP se eliminó de un plumazo muchos de esos fallos y "N" cantidad de programas maliciosos quedaron obsoletos en poco tiempo.

  Ahora Microsoft pretende hacer lo mismo con WMIC ya que este no tiene herramientas de seguridad y seguimiento integradas, PowerShell que es la evolución de la clásica consola de comandos si las tiene. Aunque PowerShell no es inmune al malware que puede usar WMIC y sin problemas podría usar PowerShell, al menos queda un registro detallado de su uso y alertar a los administradores de servidores si algo anda por ahí.

Otras aplicaciones jubiladas por Microsoft:

  Microsoft ahora recomienda usar PowerShell como reemplazo de WMIC, también, en el transcurso de pocos años hemos visto la retirada de las siguientes aplicaciones y es probable que no sean las únicas en el corto plazo:

Conclusiones:

  Microsoft al igual que Linux han decidido sacar la escoba y quitar aquello que ya no necesitan, es una lástima por WMIC pero habrá que comenzar a portar los scripts que habíamos desarrollado a PowerShell. Mil gracias por tomarse el tiempo para leer este artículo, un saludo para todos y un agradecimiento a Dedoimedo por la imagen de portada para este artículo.

How do you rate this article?

1


marjuanm
marjuanm

I'm a VB.NET Programmer, but too programming on PHP, greetings.


msproys
msproys

Blog informático para dar a conocer mis proyectos, soy desarrollador de sistemas y partidario del software libre. Por medio de este blog estaré dando a conocer algunos de mis trabajos, así como publicando diversos códigos fuentes útiles.

Publish0x

Send a $0.01 microtip in crypto to the author, and earn yourself as you read!

20% to author / 80% to me.
We pay the tips from our rewards pool.

Page not displaying correctly?