系统之家 - 系统光盘下载网站!

当前位置:系统之家 > 系统教程 > 浅析固定U盘盘符的原理(2)

浅析固定U盘盘符的原理(2)

时间:2014-07-16 17:35:00 作者:咕噜噜 来源:系统之家 1. 扫描二维码随时看资讯 2. 请使用手机浏览器访问: https://m.xitongzhijia.net/xtjc/20140716/24068.html 手机查看 评论

  七、获取可移动盘盘符:

  1、正向获取

  由HKLM\SYSTEM\CurrentControlSet\Services\Disk\Enum,USBTOR\开始的值“\”最后的部分,如USBSTOR\Disk&Ven_Yan&Prod_Do&Rev_1.00\6&99c7d70&0,由红色字部分,在这里HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_Yan&Prod_Do&Rev_1.00\6&99c7d70&0找到名为ParenIdPrefix的值,如7&cfa80fe&0。这里7&cfa80fe&0,就是我们要的,根据它,我们就能找到盘符。OK,将其转换为16进制,再在HKLM\SYSTEM\MountedDevices找这个包含16进制的值的键,OK,盘符和装入点都找到了。当然,这里我仅举了U盘的情况,其实光盘也一样的,请自行查找。

  2、反向获取

  双击HKLM\SYSTEM\MountedDevices项里,值以5c003f003f005c00开始的行,先说说它是什么?双击一下键名,你会发现原来它是哈哈发现了什么,原来它对应的字符就是“\.?.?.\.”,里面还有什么,有CDROM字样,有REMOVABLE字样,有FLOPPY字样,见下图:

  这就是我们要的磁盘类型啊,我们取几个相应的16进制的数就够了,怎样,盘符和类型都得到了吧,简单吧。如下所示:

  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是个强大的命令行工具,可以查询修改有关电脑的几乎所有信息,硬件信息,软件信息,磁盘信息都可以。

  那怎么办呢?注册表给我们提供了,在这里:HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\这里全是盘符。说到这儿,有人会问,为什么WINDOWS下不这样做啊,嘿嘿,不一样啊,WINDOWS下记载了所有曾经出现过的盘符,不管现在有没有,但WinPE不一样,刚启动的PE,注册表所记载的所有盘符都是存在的。

  九、获取有装入点的盘符:

  也有人说了,为什么不从HKLM\SYSTEM\MountedDevices获得?这里不可信的,因此所有插过的磁盘的盘符和装入点都记载在这里了,什么可信?mountvol,这个家伙的除了获取装入点,还可以更改盘符,正是我们所需要的。

  十、获取没有有装入点的盘符(虚拟盘符):

  想到了吗?八-九=十。需要强烈注意的是,这里所批的虚拟盘符,是指一切没有装载点的盘符,差不多所有的虚拟软件虚拟出的盘符都没有装入点,如SUBST, NET USE, IMDISK, RAMDISK以及虚拟光驱等等,但有一个虚拟光驱软件例外,就是DAEMON TOOLS。它有装载点,这也应该能更改盘符,但请有条件者测试。

  十一、USB固定磁盘的盘符也是通过disk signature一步步获取的吗?

  这个,即排除了所有的可移动盘和内置硬盘的盘符,剩余的就是USB固定磁盘的盘符,再根据反向signature,即HKLM\SYSTEM\MountedDevices里开头8个字符是一样的就是同一个磁盘的来判断,非常的简单,在此要感谢cn-dos的HAT,是他给出了同类情况批处理的最简单的语句。这里也涉及一个盘符顺序的问题,我们可以不用像硬盘那样通过offset值来获取,为什么呢?因为USB硬盘,只要你一插上,WINDOWS给分区的盘符都是连续的,在注册表中volume id值也是连续分布的。

  以上便是我们今天要学习的固定U盘盘符原理的相关知识,看了这么多你了解了多少?对于这方面有兴趣的朋友不妨多次研究本文内容,也许可以从中找到一些意想不到的发现。

发表评论

0

没有更多评论了

评论就这些咯,让大家也知道你的独特见解

立即评论

以上留言仅代表用户个人观点,不代表系统之家立场

其他版本软件

人气教程排行

U盘系统推荐

官方交流群 软件收录