【WMI】 カレントドライブが USB メモリーである事のチェック

  カレントドライブが USB メモリーである事のチェック( VBScript )



※ 現在(2008/08/02)、Windows 2000 でテストしましたが、XP でのチェックができていません。
※ 現在(2008/08/05)、XP でのチェックを行いました。

このスクリプトを USB メモリの中に置いてダブルクリックすると、Wscript.Echo bUsb によって、
-1 がメッセージボックスで表示されます


http://lightbox.on.coocan.jp/download/wsh/usb/check_usb_mem.vbs


check_usb_mem.vbs
  
Set WshShell = CreateObject( "WScript.Shell" )
strDrv = WshShell.CurrentDirectory
strDrv = Ucase(Left( strDrv, 2 ))

strComputer = "."
Set objWMIService = GetObject(_
	"winmgmts:\\" & strComputer & "\root\cimv2")
Query = _
	"select * from Win32_LogicalDisk " & _
	" where DriveType = 2 and DeviceID = """ & strDrv & """"
Set LogicalDisk = objWMIService.ExecQuery( Query )

bUsb = False
For Each objItem in LogicalDisk

	LoadLogicalDiskToPartition()

Next

Wscript.Echo bUsb

Function LoadLogicalDiskToPartition()

	Dim param,str

	Query = "select * from Win32_LogicalDiskToPartition"
	Set LogicalDiskToPartition = objWMIService.ExecQuery( Query )
	For Each objItem in LogicalDiskToPartition
		str = Right( objItem.Dependent & "", 4 )

		if Ucase(str) = """" & strDrv & """" then
			param = Ucase(objItem.Antecedent & "")
			LoadDiskDriveToDiskPartition(param)
		end if
	Next

End Function


Function LoadDiskDriveToDiskPartition(str)

	Dim param

	Query = "select * from Win32_DiskDriveToDiskPartition"
	Set DiskDriveToDiskPartition = objWMIService.ExecQuery( Query )
	For Each objItem in DiskDriveToDiskPartition
		if str = Ucase(objItem.Dependent & "") then
			param = Ucase(objItem.Antecedent & "")
			LoadDiskDrive(param)
		end if
	Next

End Function

Function LoadDiskDrive(str)

	str = Replace( str, "\\", "\" )

	Query = "select * from Win32_DiskDrive"
	Set DiskDrive = objWMIService.ExecQuery( Query )
	For Each objItem in DiskDrive
		target = Ucase( """" & objItem.DeviceID & """" )
		length = Len( target )
		if Right( str, length ) = target then
			if Ucase( objItem.InterfaceType & "" ) = "USB" then
				bUsb = True
			end if
		end if
	Next

End Function
  

2 Removable Disk
3 Local Disk
4 Network Drive
5 Compact Disc
6 RAM Disk

select * from Win32_LogicalDisk
where DriveType = 2 and DeviceID = "E:"

Dependent から E: を探す : Win32_LogicalDiskToPartition

Antecedent から以下を取得
Win32_DiskPartition.DeviceID="Disk #1, Partition #0" : Win32_LogicalDiskToPartition

Dependent から、上記と一致する Antecedent を取得
PHYSICALDRIVE1 : Win32_DiskDriveToDiskPartition

DeviceID より、上記と一致する行を取得
PHYSICALDRIVE1 : select * from Win32_DiskDrive

タイプが USB のもの
InterfaceType

(SCSI/hdc/IDE/USB/1394)










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ