문제

vb.net에서 IDE 및 SATA 드라이브의 하드 디스크 일련 번호를 어떻게 읽을 수 있습니까? (볼륨 일련 번호를 원하지 않습니다).

이 정보는 행정 권리없이 가능하다면 XP와 Vista를 위해 수집해야합니다.

도움이 되었습니까?

해결책

당신이 사용할 수있는 WMI (Windows Management Instrumentation) : 이와 같은 :

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

그러나 WMI를 사용하여 일련 번호가 반환되지 않은 경우에 대해 읽었습니다. 이를 달성하는 또 다른 방법은 플랫폼 호출 서비스 (PINVOKE)를 통한 것입니다.

이것 기사에는 저자가 구현하는 다운로드가 포함됩니다 CreateFile () 그리고 deviceiocontrol () VB .NET의 InterOP 서비스를 통해 드라이브 정보를 추출합니다.

위의 요약 된 방법 중 하나를 사용하려면 관리 권한이 필요합니다. 여기. 당신의 느낌이 모험적이라면 C ++/Win32 소스 코드 숙독 할 수 있습니다. ( 'readphysicaldriveinntwithzerorights ()'함수를 확인하십시오.

다른 팁

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

HDD 일련 번호를 얻는 코드는 다음과 같습니다

    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

도움이되기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top