IDE および SATA の H/D シリアル番号 (ボリューム シリアル番号ではありません) を取得する

StackOverflow https://stackoverflow.com/questions/535902

  •  22-08-2019
  •  | 
  •  

質問

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 を使用してシリアル番号が返されないケースについて読んだことがあります。これを実現するもう 1 つの方法は、Platform Invocation Services (PInvoke) を使用することです。

これ 記事には、著者が実装したダウンロードが含まれています CreateFile() そして デバイスIoControl() VB .NET の Interop サービスを通じてドライブ情報を抽出します。

上記で概説した方法のいずれかを使用するには、ADMIN 権限が必要ですが、これを回避すると思われるユーティリティが見つかります。 ここ. 。冒険したいなら 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