« 2007年02月 | メイン | 2010年01月 »
2009年07月10日
USBメモリのシリアル番号の取得
USBデバイスには製造元を表わすベンダーID、製品の種別を表わすプロダクトID、個別の製品の固有番号である iSerialNumber と呼ばれる文字列があり、 WMI 経由でそれらは取得できる。以下はサンプルの perl スクリプト。
use strict; use Win32::OLE; use Win32; my $strComputer="."; my $wmi = Win32::OLE->GetObject( "WinMgmts:{impersonationLevel=impersonate}!//". "$strComputer\\root\\cimv2" ) or die; my $colDiskDrives = $wmi->ExecQuery( "SELECT * FROM Win32_DiskDrive" ); for my $disk (in $colDiskDrives) { next if $disk->{PNPDeviceID}!~/^usbstor/i; print "$disk->{PNPDeviceID}\n"; }
これを使うとUSBメモリを簡単な鍵のように使うことができそうだ。
1)予めユーザが使用しているUSBメモリのシリアル番号を登録しておく。
2)ログオンスクリプトで、接続しているUSBメモリのシリアル番号を読み取り、登録済みのシリアル番号が見つからなければシャットダウンする。
3)ログオンスクリプトだけでなく、一定時間ごとにチェックしてやるとさらに良いかもしれない。