掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
WMIでハードディスクのシリアルナンバーを取得するには (ID:103187)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>> Disk.SerialNumberと直したのですが、同じエラーが出ますね。 > こちらではシリアルを取得できました。 手元の環境では Debug.Print Disk.DeviceID '「\\.\PHYSICALDRIVE0」 Debug.Print Disk.Model '「Hitachi HDS721010CLA SCSI Disk Device」 Debug.Print Disk.SerialNumber '「 JP2940HZ3PXR9C」 などが返されました。 ハードウェア環境等によっては Null が返されることもあるかと思います。 >> Properties_ を列挙して、そのクラスがサポートしている >> プロパティの一覧を調べてみてください。 > すいません。色々試しましたが、プロパティが列挙出来ません。 今回のコードで言うと、Disk.Caption という記述では、 実際には Disk.Properties_("Caption").Value に相当する処理が行われます。 Properties_ から返される SWbemPropertySet 型は、 SWbemProperty のコレクションであり、For Each で列挙可能です。 たとえば、プロパティの名前をすべて列挙する場合には Dim p AS Object For Each obj In DiskSet For Each p In obj.Properties_ Debug.Print p.Name Next Exit For Next という感じです。 > すいませんが、コードを教えて頂けないでしょうか? プロパティ名だけでなく、値も一緒に取得するのであればこんな感じです。 エラーチェックは省いてありますし、データ型の調査コードも手抜きですが。 Dim obj As SWbemObject Dim p As SWbemProperty Dim v As Variant For Each obj In DiskSet Debug.Print "-----" For Each p In obj.Properties_ '★プロパティ名を取得 Debug.Print p.Name; '★データ型を調べる Select Case p.CIMType Case wbemCimtypeString Debug.Print "[Type:String]"; Case wbemCimtypeUint16 Debug.Print "[Type:UInt16]"; Case wbemCimtypeUint32 Debug.Print "[Type:UInt32]"; Case wbemCimtypeUint64 Debug.Print "[Type:UInt64]"; End Select '★プロパティ値を出力 Debug.Print "="; If p.IsArray Then Debug.Print "(配列:"; If IsNull(p.Value) Then Debug.Print "Null)" Else Debug.Print LBound(p.Value); " To "; UBound(p.Value); ")" For Each v In p.Value Debug.Print , v Next End If Else Debug.Print p.Value End If Next Next > 魔界様が取得出来たなら、SerialNumberプロパティが必ず出てくるはずですよね。 http://yaplog.jp/orator/archive/20
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.