Visual Basic.NET - No se puede indizar la clase ManagementObject

 
Vista:

No se puede indizar la clase ManagementObject

Publicado por marcos (1 intervención) el 13/11/2010 20:25:47
No se puede indizar la clase ManagementObject porque no tiene ninguna propiedad predeterminada.

Saludos al foro. De antemano gracias Guillermo por haberme respondido.

Tengo un proyecto y en el formulario principal intento saber el serial del disco duro y para esto he copiado un procedimiento.

En tiempo de diseno me marca wmi_HD en wmi_HD("SerialNumber").ToString = Nothing Then con algun problema
como: no se puede inizar la clase por no tiene niguna propiedad predeterminada.

y en tiempo de ejecucion me dice: No se puede indizar la clase ManagementObject porque no tiene ninguna propiedad predeterminada.

Si alguien tiene idea de como resolver este error se lo agracesco de antemano.
El codigo del form es el siguiente:

Imports System.Management

Public Class Menu

´ Private Sub Menu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim BuscardorWMI As New ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive")

For Each wmi_HD As ManagementObject In BuscardorWMI.Get
Dim Hd As New DiscoDuro
Hd.Modelo = wmi_HD("Model").ToString
Hd.Tipo = wmi_HD("InterfaceType").ToString
hdLista.Add(Hd)
Next

BuscardorWMI = New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
Dim i As Integer = 0

For Each wmi_HD As ManagementObject In BuscardorWMI.Get
If i < hdLista.Count - 1 Then
Dim hd As New DiscoDuro
hd = hdLista(i)
If wmi_HD("SerialNumber").ToString = Nothing Then
hd.Serial = "No se Pudo Obtener El Serial"
Else
hd.Serial = wmi_HD("SerialNumber").ToString
End If
i += 1
End If
Next

For Each hd As DiscoDuro In hdLista
MessageBox.Show(hd.Modelo & vbCrLf & hd.Tipo & vbCrLf & hd.Serial)
Next

End Sub

End Class

Public Class DiscoDuro

Private _Modelo As String
Private _Tipo As String
Private _Serial As String

Public Property Modelo() As String
Get
Return _Modelo
End Get
Set(ByVal value As String)
_Modelo = value
End Set
End Property

Public Property Tipo() As String
Get
Return _Tipo
End Get
Set(ByVal value As String)
_Tipo = value
End Set
End Property

Public Property Serial() As String
Get
Return _Serial
End Get
Set(ByVal value As String)
_Serial = value
End Set
End Property

End Class
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder