IDE および SATA の H/D シリアル番号 (ボリューム シリアル番号ではありません) を取得する
-
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
それがお役に立てば幸いです。
所属していません StackOverflow