線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1753
推到 Plurk!
推到 Facebook!

抓取USB大量儲存裝置的方法Part 1( for Win2000)

 
G01
高階會員


發表:249
回覆:379
積分:215
註冊:2002-05-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-31 08:15:39 IP:210.200.xxx.xxx 未訂閱
1.當裝上USB大量儲存裝置時,以下的機碼值會有以下的變化 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR 會多出這一個Key "Enum"變成 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR\Enum 在以上這個機碼,你只能使用OpenKeyReadOnly()來進行資料讀取 另外,在Enum這個Key底下有幾個值可以參考 A: Count -->目前機器上有幾個USB大量儲存裝置 B: 數字值,例如 0 USB\Vid_090x&Pid_1142\7&1b1f5133&0&2 0:表示該USB大量儲存裝置安裝的順序 USB\Vid_090x&Pid_1142\7&1b1f5133&0&2 :為該裝置的 DeviceID 現在,讓我們來觀察DeviceID ==> USB\Vid_090x&Pid_1142\7&1b1f5133&0&2 其中, Vid_090x&Pid_1142 :Vid090x 為製造廠商編號 Pid_1142 為該裝置的產品編號 7&1b1f5133&0&2 :為您的機器上面,USB插座的編號 所以,我們對這一串資料(USB\Vid_090x&Pid_1142\7&1b1f5133&0&2) 綜合前面說明的部分作以下的解釋: 目前,您的機器上有Enum\Count個USB大量儲存裝置提供服務(Services) ;該裝置的資訊為 0(第一個USB大量儲存裝置), 製造廠商編號 Vid_090x 產品編號 Pid_1142 目前的位置在編號(7&1b1f5133&0&2)插座上 ..............待續...
G01
高階會員


發表:249
回覆:379
積分:215
註冊:2002-05-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-31 08:30:36 IP:210.200.xxx.xxx 未訂閱
附上實作函式給大家參考 //取得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;
系統時間:2024-07-01 21:10:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!