VB.NET で IDE および SATA ドライブのハードディスクのシリアル番号を読み取るにはどうすればよいですか? (ボリュームシリアル番号は必要ありません)。
この情報は、可能であれば管理者権限なしで XP と Vista の両方で収集する必要があります。
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()とDeviceIoControl()を実装して、VB .NET の相互運用サービスを通じてドライブ情報を抽出するダウンロードが含まれています。
上記の方法のいずれかを使用するには、ADMIN 権限が必要です。これを回避すると思われるユーティリティは、こちら にあります。冒険心があれば、C++/Win32ソース コードを参照できます。(関数「ReadPhysicalDriveInNTWithZeroRights()」を確認してください)
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
それが役に立てば幸い。