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