Ir para conteúdo
Fórum Script Brasil
  • 0

Capturar Serial com vb.net desktop


alexandremanowar

Pergunta

E ae pessoal beleza

Pesquisando na net desenvolvi um aplicativo desktop que captura o número de série do hd, o aplicativo funciona bem desde que eu não tenha apenas um disco na minha máquina se eu tiver qualquer outro disco ele pega o número de série de outro, por exemplo se coloco um pendrive ele pega o serial do pendrive se tiro o pendriove ele pega o serial do hd novamente.

Eu preciso corrigir isso para o programa pegar o serial apenas do disco que esta o sistema operacional! Alguém saberia como corrigir? Olha o código:

Private Sub btnSerie_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSerie.Click

        
        ''captura a série do hd
        Dim searcher2 As New ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive")
        Dim hdCollection2 As New ArrayList()
        Dim Serial As String = ""
        Dim Serial2 As String = ""

        For Each wmi_HD As ManagementObject In searcher2.[Get]()


            Dim hd As New HardDrive()

            hd.Model = wmi_HD("Model").ToString()

            hd.Type = wmi_HD("InterfaceType").ToString()


            hdCollection2.Add(hd)
        Next


        searcher2 = New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")

        Dim i As Integer = 0

        For Each wmi_HD As ManagementObject In searcher2.[Get]()

            Dim hd As HardDrive = DirectCast(hdCollection2(i), HardDrive)



            'Pegando o Serial

            If wmi_HD("SerialNumber") Is Nothing Then
                hd.SerialNo = "None"
                Serial = "Não consta"
            Else
                hd.SerialNo = wmi_HD("SerialNumber").ToString()
                Serial = wmi_HD("SerialNumber").ToString()
                
            End If


            i += 1
        Next


              Label7.Text = Serial




      
    End Sub
Acredito que um dos problemas esta nessa linha: Dim searcher2 As New ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive") pois é um select que varrre todos os drivers que existir foi a única forma que achei de fazer, logo ele deve estar me mostrando o serial do último disco que ele acha, preciso que ele me passe o serial apenas do disco que esta o sistema operacional, alguém sabe corrigir? Abaixo segue as class que esse código usa: Class HardDrive
Class HardDrive
    Private m_model As String = Nothing
    Private m_type As String = Nothing
    Private m_serialNo As String = Nothing
    Public Property Model() As String
        Get
            Return m_model
        End Get
        Set(ByVal value As String)
            m_model = value
        End Set
    End Property
    Public Property Type() As String
        Get
            Return m_type
        End Get
        Set(ByVal value As String)
            m_type = value
        End Set
    End Property
    Public Property SerialNo() As String
        Get
            Return m_serialNo
        End Get
        Set(ByVal value As String)
            m_serialNo = value
        End Set
    End Property
End Class

Me ajudem por favor!

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...