淺析固定U盤盤符的原理論文
研究固定U盤盤符從哪里開始?從注冊表來研究是最好的。為什么要從注冊表來研究磁盤與盤符?很簡單,操作注冊表速度最快,這不同于使用工具軟件從低層進行查詢,其實PECMD的SHOW命令就是低層操作,操作復雜。其實注冊表記錄了一切,不再需要工具軟件去查找。
一、都有什么類型的磁盤:
這是首先要清楚的概念,分清了類別,我們才能去尋找相應的盤符。不用多說,按物理類別來分可分為磁性盤(如硬盤、軟盤、磁帶機),壓縮盤(CD/DVD),閃存盤(U盤),ZIP盤(基本淘汰)等;從接口分類可分為IDESATASCSIUSB等類型;WINDOWS分類為本地磁盤(也叫固定磁盤fixed),可移動磁盤(removable,如U盤,光盤,軟盤,ZIP盤等)兩大類。對于光盤,不管什么類型,什么接口,一律為CDROM/DVDROM,而本地磁盤,包括內置硬盤,也包括USB移動硬盤或量產(chǎn)為USB_HDD的閃存盤,可移動盤,如我們買的U盤一般都是可移動類型。
二、注冊表中哪個位置準確記錄了可擦寫磁盤的名稱、類型與數(shù)量?
HKLMSYSTEMCurrentControlSetServicesDiskEnum
這里的鍵名為0,1,2...即是磁盤在系統(tǒng)中的序號,COUNT名為磁盤總數(shù)。如我的系統(tǒng)有相應的值有IDE,USBTOR等,相應的還有SCSI,即代表了類型為IDE的硬盤,SCSI盤(固定或可移動),USB盤(固定或可移動)。如果你去除了一個盤,那么,這里的鍵名馬上會減少一個,假設有3個磁盤,你去除了中間的1,那么原來的2值也不會變成1,因此,在選擇硬盤號時,要注意,雖然只有2個盤了,但也不是連續(xù)編號的。硬盤序號,是選擇其對應盤符的基礎。
三、注冊表中哪個位置記錄了磁盤的裝入點mount point和盤符?
HKLMSYSTEMMountedDevices
這里的鍵名只有兩種,一種是以類似"??Volume{07c229a8-4b84-11de-8e8d-00e04c3e821b}"開頭的,{}中的部分即分區(qū)的ID,它是調整盤符的基礎,是不變的。另一種就是我們的盤符形式的了,如A: C:等。仔細觀察會發(fā)現(xiàn)每種鍵名的鍵值都會在另外一種鍵的鍵值中找,這個值是唯一的,具體內容是什么,請看接下來的圖形及最后的總結。這個位置最重要,一切盤符與類型信息都在這里,接下來會詳細解讀。
四、如何找到一個本地磁盤(或固定磁盤)所包含的分區(qū)與盤符?
一句話,通過disk signature,可以翻譯為硬盤標記,這個東西是從WINNT 3.5開始WINDOWS為磁盤所建立的位于主啟動分區(qū)MBR中的唯一標記,一般沒有重復的。它是一個16進制4 bytes的數(shù)值。比如disk signature 為A8 E1 B9 D2,則我們可以在HKLMSYSTEMMountedDevices項里面找值為D2 B9 E1 A8開頭的項名為DosDevices后面的盤符,通過這個值,還可以得到這樣就得到其對應的開頭為??volume裝入點,在這項下disk signature是反序的。那么,我們如何得到disk signature呢?通過搜索A8E1B9D2,會找到這樣一個項:HKEY_LOCAL_MACHINEHARDWAREDESCRIPTIONSystemMultifunctionAdapter9DiskControllerDiskPeripheral(不同的電腦,上述項中紅色的數(shù)字可能不同),項下有一個名為Identifier的值為"00c72b95-A8E1B9D2-A",如果系統(tǒng)只有一塊硬盤的話,那么,可以肯定,這個A8E1B9D2就是disk signature。反過來,也就是說,只要我們找到這個值,就可以找到其盤符及裝入點。那么,如果有幾塊FIXED 盤,到底哪個signature對應哪塊盤呢?
五、Disk signature與磁盤的對應:
在正常的WINDOWS下面,這個問題好解決,在WinPE系統(tǒng)下就是不行。因此,WinPE系統(tǒng)下必須先得到disk signature或使用低層的diskpart命令,但一般的WinPE系統(tǒng)中都沒有為DISKPART安裝相應的服務。在WINDOWS下這個設備類別項HKEY_LOCAL_MACHINESYSTEMCurrentControlSetEnumSTORAGEVolume,所有的連接過的固定磁盤的signature都記錄在這里而且不能刪除,舉例:這是一個子項,1&30a96598&0&SignatureA8E1B9D2Offset7E00LengthXXXXXXXX紅字部分是子signature,后面的Offset7E00是該磁盤的偏移值也是起始分區(qū)標志,LengthXXXXXXXX是指分區(qū)的大小,當然,這里我們不需要知道它。那么,到底如何確定signature所對應的磁盤號啊,盤符順序是根據(jù)如上volume項下的分區(qū)的offset值來確定,分區(qū)從前至后,offset值從小到大,因此,盤符分區(qū)offset值的順序,是決定盤符順序的依據(jù)。
總結一下:WINDOWS下獲取一個固定磁盤盤符的方法:
1、獲取磁盤signature
在HKEY_LOCAL_MACHINEHARDWAREDESCRIPTIONSystemMultifunctionAdapter9DiskControllerDiskPeripheral(不同的電腦,上述項中紅色的數(shù)字可能不同),項下有一個名為Identifier的鍵,找到兩個"-"中間的部分即為disk signature值,如"00c72b95-A8E1B9D2-A"。
注:signature也可以通過mfbfix軟件或windows自帶的diskpart獲得.
2、根據(jù)signature找到對應的磁盤序號
根據(jù)signature,找到這里HKEY_LOCAL_MACHINESYSTEMCurrentControlSetEnumSTORAGEVolume1&30a96598&0&SignatureA8E1B9D2Offset7E00LengthXXXXXXXX,根據(jù)offset值從小到大的順序來確定盤符的順序!
3、根據(jù)signature獲取盤符
將signature反序排列,在HKLMSYSTEMMountedDevices項里面找值為以反序排列數(shù)字開頭的項名為DosDevices后面的盤符和相應的裝入點。這里就有一個問題,假設一個盤有3個分區(qū),對應3個盤符,如何確定其盤符順序?請看-
六、固定磁盤盤符的順序:
根據(jù)磁盤分區(qū)的offset值從小到大排序,即可得到正確的盤符順序。在HKLMSYSTEMMountedDevices項下將offset值反序即可得到對應分區(qū)的ID值,同時也就獲得了該分區(qū)的盤符。說到這里固定磁盤的盤符獲得方法說完了,再說說如何獲得可移動磁盤的盤符吧。
七、獲取可移動盤盤符:
1、正向獲取
由HKLMSYSTEMCurrentControlSetServicesDiskEnum,USBTOR開始的值“”最后的部分,如USBSTORDisk&Ven_Yan&Prod_Do&Rev_1.006&99c7d70&0,由紅色字部分,在這里HKLMSYSTEMCurrentControlSetEnumUSBSTORDisk&Ven_Yan&Prod_Do&Rev_1.006&99c7d70&0找到名為ParenIdPrefix的值,如7&cfa80fe&0。這里7&cfa80fe&0,就是我們要的,根據(jù)它,我們就能找到盤符。OK,將其轉換為16進制,再在HKLMSYSTEMMountedDevices找這個包含16進制的值的鍵,OK,盤符和裝入點都找到了。當然,這里我僅舉了U盤的情況,其實光盤也一樣的,請自行查找。
2、反向獲取
雙擊HKLMSYSTEMMountedDevices項里,值以5c003f003f005c00開始的行,先說說它是什么?雙擊一下鍵名,你會發(fā)現(xiàn)原來它是哈哈發(fā)現(xiàn)了什么,原來它對應的字符就是“.?.?..”,里面還有什么,有CDROM字樣,有REMOVABLE字樣,有FLOPPY字樣,見下圖:
這就是我們要的磁盤類型啊,我們取幾個相應的16進制的數(shù)就夠了,怎樣,盤符和類型都得到了吧,簡單吧。如下所示:
if /i !tpcode! equ 00470045004E set flpdrv=!flpdrv! %%a
if /i !tpcode! equ 004300640052 set dvddrv=!dvddrv! %%a
if /i !tpcode! equ 00520065006D set remdrv=!remdrv! %%a
上面第一行,如果存在G.E.N,則是軟盤;第二行,如果存在C.d.R,則是光盤;第三行,如果存在R.e.M,則是U盤。
要注意的是,對于可移動U盤,在VISTA下是以5f003f00(十進制為"_.?.")開始的,這是U盤的唯一標志。至此主要的東西都說完了,要想調整盤符,還有必要的東西要說:
八、獲取所有盤符:
在WINDOWS下,fsutil和wmic命令都可以,但因前者XP和VISTA下的不一樣,轉換有點麻煩,因此使用了后者,所有盤符,不論是虛擬還是非虛擬的,都可以得到。
在WinPE下,如果使用wmic是不行的,因為沒有wmi服務,順序說一下wmic是個強大的命令行工具,可以查詢修改有關電腦的幾乎所有信息,硬件信息,軟件信息,磁盤信息都可以。
那怎么辦呢?注冊表給我們提供了,在這里:HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerMountPoints2這里全是盤符。說到這兒,有人會問,為什么WINDOWS下不這樣做啊,嘿嘿,不一樣啊,WINDOWS下記載了所有曾經(jīng)出現(xiàn)過的盤符,不管現(xiàn)在有沒有,但WinPE不一樣,剛啟動的PE,注冊表所記載的所有盤符都是存在的。
九、獲取有裝入點的盤符:
也有人說了,為什么不從HKLMSYSTEMMountedDevices獲得?這里不可信的,因此所有插過的磁盤的盤符和裝入點都記載在這里了,什么可信?mountvol,這個家伙的除了獲取裝入點,還可以更改盤符,正是我們所需要的。
十、獲取沒有有裝入點的盤符(虛擬盤符):
想到了嗎?八=十。需要強烈注意的是,這里所批的虛擬盤符,是指一切沒有裝載點的盤符,差不多所有的虛擬軟件虛擬出的盤符都沒有裝入點,如SUBST, NET USE, IMDISK, RAMDISK以及虛擬光驅等等,但有一個虛擬光驅軟件例外,就是DAEMON TOOLS。它有裝載點,這也應該能更改盤符,但請有條件者測試。
十一、USB固定磁盤的盤符也是通過disk signature一步步獲取的嗎?
這個,即排除了所有的可移動盤和內置硬盤的盤符,剩余的就是USB固定磁盤的盤符,再根據(jù)反向signature,即HKLMSYSTEMMountedDevices里開頭8個字符是一樣的就是同一個磁盤的來判斷,非常的簡單,在此要感謝cn-dos的HAT,是他給出了同類情況批處理的最簡單的語句。這里也涉及一個盤符順序的問題,我們可以不用像硬盤那樣通過offset值來獲取,為什么呢?因為USB硬盤,只要你一插上,WINDOWS給分區(qū)的盤符都是連續(xù)的,在注冊表中volume id值也是連續(xù)分布的。
以上便是我們今天要學習的固定U盤盤符原理的相關知識,看了這么多你了解了多少?對于這方面有興趣的朋友不妨多次研究本文內容,也許可以從中找到一些意想不到的發(fā)現(xiàn)。
【淺析固定U盤盤符的原理論文】相關文章:
淺析饑餓營銷論文03-27
淺析教育論文的寫作12-07
淺析脫粒機的原理與安全使用技術11-15
管理學原理的論文05-16
編碼原理課程改革論文03-19
化工原理課程改革論文01-08
淺析集體備課的實施論文03-24
淺析訴辯交易制度論文11-21
淺析如何修改論文的方式12-09
- 相關推薦