2012-02-12 6 views
17

から特定のデバイスタイプを取得します。私はWM_DEVICECHANGEについて知っていますが、ドライブ文字を指定すると特定のデバイスタイプ情報を取得する必要があります。たとえば、カードリーダーのカードと「普通の」フラッシュドライブを区別したいと思います。 GetDriveType()は十分に洗練されていないようです。私の他の選択肢は何ですか?私はSD(または他のカード)をカードリーダーに挿入されたときを検出するドライブ文字

私はWindows 7の溶液で満足しています。私は後方互換性は必要ありません。

は、すべての可能な洗練されたこのタイプのですか?

私は満足のいく答えを提供しないthis topicを発見しました。 This oneのような感じがしますが、サンプルコードやサンプルコードへのポインタはありません。このような共通の要求に対して、誰も協力していないことは信じられません。

[EDIT]

私が持っているにもfound this。提供されるサンプルにはいくつかのエラーがありますが、それを修正してもまだ結果は得られません。挿入されたSDカードを持っているデバイスのために私はpDeviceDesc.BusTypeBusTypeUnknownの代わりBusTypeSd取得します。これは簡単なようであり、依然として失敗しました。カードリーダーは、OSへの定期的なフラッシュドライブと同じように自分のストレージを提示するので

+1

まだWMIを試しましたか? Win32_LogicalDriveとWin32_PhysicalMediaは有望です。コードを記述する前に、まずWMIコード作成ユーティリティを使用してください。 –

+0

いいえ。以前はWMIで頭痛がありました。私は可能な限り避けています。 WMIはWindowsサービスで動作しますか? – wpfwannabe

+0

こんにちは、あなたはこの質問に答えましたか?私もこれを行う必要があります –

答えて

0

は、私はそれが可能だとは思いません。どちらもUSBマスストレージクラスのデバイスです。このデバイスクラスにはWikipedia articleがあります。 OSは、これらの2つのデバイスタイプを区別する方法がありません。

1

これは便利になります。How Can I Determine Which USB Devices are Connected to a Computer?

strComputer = "." 

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
Set colDevices = objWMIService.ExecQuery _ 
    ("Select * From Win32_USBControllerDevice") 

For Each objDevice in colDevices 
    strDeviceName = objDevice.Dependent 
    strQuotes = Chr(34) 
    strDeviceName = Replace(strDeviceName, strQuotes, "") 
    arrDeviceNames = Split(strDeviceName, "=") 
    strDeviceName = arrDeviceNames(1) 
    Set colUSBDevices = objWMIService.ExecQuery _ 
     ("Select * From Win32_PnPEntity Where DeviceID = '" & strDeviceName & "'") 
    For Each objUSBDevice in colUSBDevices 
     Wscript.Echo objUSBDevice.Description 
    Next  
Next 

サンプル出力(木でなければなりません):

USB Root Hub 
Microsoft USB IntelliMouse Web 
Microsoft USB IntelliMouse Web 
USB Mass Storage Device 
Disk drive 
Generic volume 
USB Root Hub 
USB Root Hub 

私はすべてのUSBストレージは、 "USB大容量記憶装置デバイス" としての地位を説明していない願っています。存在する場合は、ボリューム名またはautorun.infがある場合はそれを確認します。

マイクロソフトはUSBの発明家の一人で、this Linux infoが必要とは思われませんが、「Pendrive」や「Flash Drive」などの検索用語では収穫できます。

関連する問題