none
Solución para ver Serial Disco Duro y Nombre de la PC RRS feed

  • Pregunta

  • Hola amigos, tengo este código con el cual puedo ver el serial del disco duro pero deseo agregarle ver el nombre de la pc y no he podido, espero alguien me pueda ayudar adicionar este código para que funcione como lo necesito, este es mi codigo actual que funciona para ver serial. Gracias a quien me pueda ayudar.

    'Importamos el namespace System.Management para Accesar al Windows Management Instrumentation
    Imports System.Management

    Public Class Form1
        'Declaramos una coleccion del tipo ArrayList
        Dim hdLista As New ArrayList

        'En el evento Load escribiremos el codigo para obtener la informacion
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Creamos ahora un objeto ManagementObjectSearcher y agregaremos la cadena de seleccion para obtener de la clase Win32_DiskDrive la Informacion del modelo y el tipo del Disco Duro
            Dim BuscardorWMI As New ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive")

            For Each wmi_HD As ManagementObject In BuscardorWMI.Get
                'creamos un objeto del tipo DiscoDuro
                Dim Hd As New DiscoDuro
                'asignamos el valor del Modelo obtenido de la consulta en la propiedad Modelo del objeto Hd
                Hd.Modelo = wmi_HD("Model").ToString
                'asignamos el valor del Tipo obtenido de la consulta en la propiedad Modelo del objeto Hd
                Hd.Tipo = wmi_HD("InterfaceType").ToString
                'y Finalmente agregamos dicho objeto Hd al ArrayList que creamos
                hdLista.Add(Hd)
            Next


            'Creamos ahora una nueva instancia del objeto que habiamos creado del tipo ManagementObjectSearcher y agregaremos la cadena de seleccion para obtener de la clase Win32_PhysicalMedia los seriales internos de los Discos Duros que hallamos encontrado en el ciclo anterior
            BuscardorWMI = New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
            'Deifinimos a i como un contador para manejar el ArrayList
            Dim i As Integer = 0

            For Each wmi_HD As ManagementObject In BuscardorWMI.Get
                'Indica continuar con el ciclo mientras que i sea menor que la cantidad de discos encontrados
                If i < hdLista.Count - 1 Then
                    'creamos  un nuevo objeto del Tipo DiscoDuro para ir almacenando alli cada uno de los discos duros encontrados
                    Dim hd As New DiscoDuro
                    'asignamos el valor acutalde la lista en el objeto HD
                    hd = hdLista(i)
                    'debemos verificar que el valor del campo "SerialNumber" obtenido en la busqueda no sea un valor nulo de lo contrario la aplicacion arrojará una excepcion
                    If wmi_HD("SerialNumber").ToString = Nothing Then
                        'en el caso de  que se halla encontrado el serial la propiedad "Serial" del objeto hd se guardará los siguiente:
                        hd.Serial = "No se Pudo Obtener El Serial"
                    Else
                        'en el caso contrario almacenaremos el numero de serial interno del disco duro en la propiedad "Serial" del objeto hd
                        hd.Serial = wmi_HD("SerialNumber").ToString
                    End If
                    'incrementando i
                    i += 1
                End If
            Next

            'aqui coloco una manera de mostrarlo ustedes puesden escoger la que mejor les paresca
            For Each hd As DiscoDuro In hdLista
                'por cuestiones de tiempo yo escoji usar un MessageBox
                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


    lunes, 11 de julio de 2016 17:12

Respuestas

  • Public Declare Function GetComputerName _
                            Lib "kernel32" _
                            Alias "GetComputerNameA" (ByVal lpBuffer As String, _
                                                      nSize As Long) _
                   As Long
    Public Const MAX_COMPUTERNAME_LENGTH = 15&

    Function MachineName() As String
      Dim Tamaño As Long
      Dim Buffer As String
      MachineName = ""
      Buffer = Space(MAX_COMPUTERNAME_LENGTH + 1)
      Tamaño = Len(Buffer)
      If GetComputerName(Buffer, Tamaño) Then
        MachineName = Left(Buffer, Tamaño)
      End If


    • Editado LUIS TARZIA lunes, 11 de julio de 2016 23:07
    • Marcado como respuesta Jorge_Mora martes, 12 de julio de 2016 0:00
    lunes, 11 de julio de 2016 23:07

Todas las respuestas

  • Public Declare Function GetComputerName _
                            Lib "kernel32" _
                            Alias "GetComputerNameA" (ByVal lpBuffer As String, _
                                                      nSize As Long) _
                   As Long
    Public Const MAX_COMPUTERNAME_LENGTH = 15&

    Function MachineName() As String
      Dim Tamaño As Long
      Dim Buffer As String
      MachineName = ""
      Buffer = Space(MAX_COMPUTERNAME_LENGTH + 1)
      Tamaño = Len(Buffer)
      If GetComputerName(Buffer, Tamaño) Then
        MachineName = Left(Buffer, Tamaño)
      End If


    • Editado LUIS TARZIA lunes, 11 de julio de 2016 23:07
    • Marcado como respuesta Jorge_Mora martes, 12 de julio de 2016 0:00
    lunes, 11 de julio de 2016 23:07
  • Gracias luis.
    martes, 12 de julio de 2016 0:00