none
WMI経由でのドライブの物理シリアル取得が失敗してしまう RRS feed

  • 質問

  • PCに接続されている全てのドライブの物理シリアルナンバーを取得したく、

    WMI経由で物理シリアルナンバーの取得を試みておりますが、

    うまく取得できないでおります。

     

    WMICodeCreatorで取得を試みたのですが

    これも失敗いたします。

     

    一応、DeviceIoControl経由でDFP_RECEIVE_DRIVE_DATAを発行すれば、

    シリアルは取得できるのですが、なるだけシンプルな形で、

    USB,IDE,IEEEで接続しているドライブへの物理シリアルが取得したいです。

     

    なにか、環境の問題で、WMIが失敗するのでしょうか?

    それとも、WMIの精度が低いのでしょうか?

    ご教授お願いいたします。

     

    ' 環境

      WindowsXP+SP2
      VS2003Pro

     

    ' VBソース

    Dim searcher = New Management.ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
    Dim drive As System.Management.ManagementObject
    For Each drive In searcher.Get()
       If drive("SerialNumber") = "" Then
          Console.WriteLine("SerialNumber is Noting")
       Else
          Console.WriteLine("SerialNumber", drive("SerialNumber").ToString())
       End If
    Next

     

    ' VBSソース WMICodeCreator 製

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
    Set colItems = objWMIService.ExecQuery( _
        "SELECT * FROM Win32_PhysicalMedia",,48)
    For Each objItem in colItems
        Wscript.Echo "SerialNumber: " & objItem.SerialNumber
    Next

    2008年1月22日 12:04

すべての返信

  • 対象が WMI に対応していなければ、拾えないのは道理だと思います。

     

    WMI はこの辺の仕様を共通化するためにある規格であって、必ず support しなければならないものではありませんので。

    2008年1月25日 16:43
  • こんにちは。中川俊輔 です。

     

    ちゃっぴさん、大変参考になる回答ありがとうございます

     

    tetsukoさん、フォーラムのご利用ありがとうございます。

    その後いかがでしょうか?

    問題解決に有効な回答のようでしたので、ちゃっぴさんの回答へ回答済みチェックをつけさせていただきました。

     

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    問題解決につながる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてください。

    tetsukoさんはチェックを解除することもできますので、ご確認ください。

     

    それでは!

    2008年1月31日 8:10
  • WMI自体は、全メーカーがサポートしているわけではないのですね。

    DDKのサンプルUSBViewを参考に1から作りたいと思います。

    ありがとうございます。

     

    2008年2月1日 9:35