Pergunta

Como posso ler o número de série do disco rígido para unidades IDE e SATA em VB.NET? (Eu não quero o número do volume de série).

Esta informação deve ser recolhida tanto para XP e Vista, se possível sem direitos administrativos.

Foi útil?

Solução

Você pode usar WMI (Windows Management Instrumentation) como este :

Dim mos As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")

For Each mo As ManagementObject In mos.Get()
    Dim serial As String = mo("SerialNumber").ToString()
Next

Embora, eu li sobre casos em que nenhum número de série é retornado usando WMI. Outra maneira de fazer isso seria através Platform Invocation Services (PInvoke).

Este artigo inclui um download em que os implementos autor CreateFile () e DeviceIoControl () à informação extrato de movimentação através de serviços de interoperabilidade no VB .NET.

Para usar qualquer um dos acima métodos esboçados você terá direitos de administrador, um utilitário que parece contornar isso pode ser encontrado aqui . Se o seu sentimento de aventura The ++ / Win32 código fonte C está disponível para você ler. (Confira 'ReadPhysicalDriveInNTWithZeroRights ()' A função)

Outras dicas

Public Function getHardDiskSerialNo()
    Dim serial As String

    Dim hd As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
    For Each dvs As ManagementObject In hd.Get()
        serial = dvs("SerialNumber").ToString()

    Next
    Return serial

End Function

Aqui está o código para obter HDD Número de série

    Dim HDD_Serial As String

    Dim hdd As New ManagementObjectSearcher("select * from Win32_DiskDrive")

    For Each hd In hdd.Get

        HDD_Serial = hd("SerialNumber")
        MsgBox(HDD_Serial)
    Next

Espero que ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top