Obter H / D número de série (não Volumn Serial Number) para IDE e SATA
-
22-08-2019 - |
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.
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.