2

VB.NET で IDE および SATA ドライブのハードディスクのシリアル番号を読み取るにはどうすればよいですか? (ボリュームシリアル番号は必要ありません)。

この情報は、可能であれば管理者権限なしで XP と Vista の両方で収集する必要があります。

4

3 に答える 3

6

次のように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()」を確認してください)

于 2009-02-11T20:13:24.857 に答える
0

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

それが役に立てば幸い。

于 2013-08-16T18:07:01.943 に答える