抓取USB大量儲存裝置的方法Part 2( for Win2000) |
|
G01
高階會員 發表:249 回覆:379 積分:215 註冊:2002-05-21 發送簡訊給我 |
針對Part 1 的實作函式
//取得USB大量儲存裝置的函式 //DeviceID (ProductKey)
//USB插座編號 (SlotID)
//儲存裝置編號 (EnumNo) procedure Get_Current_USBSTOR_Info(var ProductKey,SlotID:string;var EnumNo:integer);
var ct,Vid_Pos,i:integer;
reg:TRegistry;
HardWareKeyStr:string;
FindSlotID:boolean;
begin
HardWareKeyStr := '';
ProductKey := '';
SlotID := '';
FindSlotID := FALSE;
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
if(reg.OpenKeyReadOnly('SYSTEM\CurrentControlSet\Services\USBSTOR\Enum') = TRUE)then
begin
ct := 0;
ct := reg.ReadInteger('Count');
if(ct > 0)then
begin
EnumNo := ct-1;
HardWareKeyStr := reg.ReadString(IntToStr(ct-1));
end;//if...end!!
Vid_Pos := Pos('Vid_',HardWareKeyStr);
if(Vid_Pos > 0)then
for i := Vid_Pos to Length(HardWareKeyStr) do
begin
if(HardWareKeyStr[i] = '\')then
begin
FindSlotID := TRUE;
Continue;
end//if...end!!
else
if(FindSlotID = TRUE)then SlotID := SlotID+HardWareKeyStr[i]
else ProductKey := ProductKey+HardWareKeyStr[i];
end;//for...i...end!!
end;//if...end!!
reg.CloseKey;
reg.Free;
end; 現在,讓我們來看一看;自己的電腦上有使用過哪幾種USB大量儲存裝置
(包含了隨身碟,及使用USB外接盒的硬碟) 各位是否發現,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum機碼中
儲存了曾經在這台機器上使用過的USB大量儲存裝置的資料 現在,讓我們再更詳細地來看其中包含了哪些訊息(參考下圖)
上圖中,紅色方框的部分為該裝置曾經使用過的USB插座
例如:
裝置 Disk&VenEZ_Disk&Prod_MassStorage_Disk&Rev
就曾經使用過兩個USB插座(6&4e63deb&0)和(7&1274702d&0) 所以,配合Part1中說明的部分,我們就可以取得現有USB大量儲存裝置的相關資料了!!
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |