Todo lo que quise saber de mi disco y no me atreví a preguntarlo

Tal como os tengo acostumbrados, con el trasfondo de preguntas que se repiten y repiten, os facilito un ejemplo de cómo rastrear toda la información de nuestro disco “lógico” utilizando el conocido “System.Management” del ‘Framework 2.0’.


En el siguiente ejemplo rellenamos un “DomainUpDown” con los nombres de las características de nuestro disco, a continuación rellenamos un ‘label’ con la descripción de la característica cada vez que el “DUD” cambia de indice… sencillo, verdad? Utilizando este método podremos acceder a las propiedades disponibles sin tener que buscar sus nombres de antemano. A pesar de que os anticipo que a menudo muchos de nosotros intentamos obtener información o características que no están disponibles para ese “disco” o bien no existen!.  No olvidéis que la información es la de WIN32_DiskDrive.


MisDiscos


Para los mas profundos en búsqueda de información mas “Fisica” podeis cambiar la “query” por la de Win32_PhysicalMedia.


Private MisDiscos As New ManagementObjectSearcher(“SELECT * FROM Win32_PhysicalMedia”)


Espero vuestras conversaciones J
Cuidaros,
Pep Lluis,


Imports System.Management


 


Public Class Form1


   


    ‘Obtener toda la informacion de mis discos (Logicos)


    Private MisDiscos As New ManagementObjectSearcher(“SELECT * FROM Win32_DiskDrive”)


    ‘Almacen del valor de las caracteristicas segun propiedad


    Private DiscInfo As New ManagementObject


 


    Private Sub Form1_Load(…..) Handles MyBase.Load


        Dim MiInfo = From Hd As ManagementObject In MisDiscos.Get Select Hd


        ‘Seleccionar la info del disco(0)


        ‘O bien proporcionar un combo para su seleccion
        DiscInfo = MiInfo(0)


        ‘Obtener el nombre de la propiedad


        ‘Rellenar el DUD con los nombres


        Me.DomainUpDown1.Items.AddRange( _


           ( _


              From Pn As Management.PropertyData _


              In DiscInfo.Properties _


              Select Pn.Name _


            ).ToArray)


        ‘Por defecto seleccionar el primer indice


        Me.DomainUpDown1.SelectedIndex = 1


    End Sub


   


    ‘ Al cambiar el indice del item seleccionado…


   


    Private Sub DomainUpDown1_SelectedItemChanged() _
         
Handles DomainUpDown1.SelectedItemChanged


        Try


            ‘obtener la descripcion de la propiedad


            Descripcion.Text = DiscInfo.Properties(Me.DomainUpDown1.Text).Value


        Catch ex As Exception


            ‘en caso de error…


            Descripcion.Text = “¿?”


        End Try


    End Sub


End Class

10 thoughts on “Todo lo que quise saber de mi disco y no me atreví a preguntarlo”

  1. NO ES POSIBLE COMPILES EL CODIGO ? ? DE TAL MANERA, QUE DESAROLLES UN EJECUTABLE QUE NOS AYUDE A MUCHOS, CON ESA CONSULTA DE LAS PROPIEDADES DEL DISCO DURO SOBRE TODO EL SERIAL.

  2. Hola Osan,

    El proposito de este blog, es compartir codigo para facilitar nuestra tarea diaria y ciertamente es complejo distribuir ejecutables. Si te parece bien utiliza la opcion [Contact] para especificarme lo que necesitas exactamente e intentare ayudarte.

    Saludos,
    PepLluis,

  3. Hola que tal queria preguntarte si me podria ayudar con un problema que tengo. Lo que pasa es que necesito saber que hardware tengo conectado en mis puertos de mi ordenador espero me puedas ayudar muchas gracias.

  4. Hola Giancarlo,
    La unica forma de saber que hardware tienes conectado a un puerto serie, seria interrogando al propio dispositivo… debes remitirte a la informacion del fabricante, en tanto al comando o la trama a la que respondera el dispositivo.

    Entonces basado en el conocimiento de los dispotivos que intentas reconocer, puedes fundamentar una base que intente localizarlos.

    Saludos,
    PepLluis,

  5. me Marca error en esta linea
    Dim MiInfo = From Hd As ManagementObject In MisDiscos.Get Select Hd
    dice: se Esperaba fin de instruccion
    y por lo tanto en la siguiente instruccion
    DiscInfo = MiInfo(0)
    Dice que no se a declarado MiInfo(0)
    en esta otra linea
    Me.DomainUpDown1.Items.AddRange( ( From Pn As Management.PropertyData n DiscInfo.Properties _
    Select Case Pn.Name).ToArray)
    mara que no se a declado From y en Pn se esperaba ‘)’

    espero y me puedan Ayudar
    Eduardo

  6. Hola Eduardo,
    Tu proyecto tiene que incluir la referencia a la libreria de Linq y hacer el import correspondiente.

    Saludos,
    PepLluis,

  7. Muchas gracias Pepe, tu aporte esta excelente, he estado buscando en varios sitios y tu aporte es el único que me ha funcionado. Lo que me interesa es el número de serie del disco y probé en dos equipos con windows xp y el número de serie no aparece, en cambio probñe en tres equipos con windows 7 y en éstos si me aparece el número de serie.
    ¿Sabes porque sucede esto?
    Espero me puedas apoyar y gracoas de nuevo.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>