« 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)ログオンスクリプトだけでなく、一定時間ごとにチェックしてやるとさらに良いかもしれない。