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.
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
Interesante Pep…muuuy interesante :D.
Un Abrazo crack!!
Fran!!
Que haria sin tus piropos… jajajaja.
Un abrazo al Krá de Huelva!
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.
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,
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.
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,
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
Hola Eduardo,
Tu proyecto tiene que incluir la referencia a la libreria de Linq y hacer el import correspondiente.
Saludos,
PepLluis,
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.
Hola Edgar,
Para poder gestinoar correctamente las conversaciones entorno a preguntas por favor dirigite a los siguientes foros… (simplemente registrate con el nombre)
http://msmvps.com/blogs/peplluis/archive/2012/08/08/preguntas-directas-nuevos-foros-especificos.aspx
Gracias y Saludos,
PepLluis,