无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 6449|回复: 26
打印 上一主题 下一主题

[讨论] grub4dos下有什么办法获得知那个磁盘是u盘,并且获取u盘的卷序列号?

[复制链接]
1#
发表于 2011-12-5 10:33:41 | 显示全部楼层

回复 #1 hotdll 的帖子

支持啊,GRUB4DOS不是有UUID的命令吗,可以得到吧

(hd0,0)是U盘,好像U盘都是这个序列号0000-0000,不知道是不是正确。

测试是否U盘,我是用笨办法GRUB4DOS检测是否单分区磁盘,然后要求使用者确认是否U盘。

如果UGHOST能通用,就造福大家了。

饭大注册比我早,帖子比我多,级别和我一样,窃喜!!!

[ 本帖最后由 mygamexxx 于 2011-12-5 10:44 编辑 ]
回复

使用道具 举报

2#
发表于 2011-12-5 13:37:32 | 显示全部楼层
饭大看看这段代码可用吗?

::检测启动介质类型
root (ud) && goto :ud
checkrange 0x0 read 0x8280 && map (fd0) (fd1) && map --hook && goto :checkos
checkrange 0x80 read 0x8280 && goto :hdcheck
goto :cd
::所有其他启动盘、光盘启动、pxe启动作为光盘启动处理
::echo -P:1218 $[0105]未知的启动盘类型! && echo -P:1418 $[0105]按任意键重启。 && pause && reboot
exit
:ud
calc *0x82b8>>8&0xff-0x80 || goto :hdcheck
calc *0x82b8>>8&0xff-0x80 && map (fd0)+1 (hd) && map --hook && goto :checkos
exit
:cd
set cdd=off
goto :checkos
exit
:hdcheck
root (hd0,1) && goto :checkos
root (hd0,4) && goto :checkos
uuid (hd0,0)
if %?_UUID%==0000-0000 goto :usbhdd
goto :checkos
exit
::硬盘次序轮换,将U盘置于最后
:usbhdd
clear
set /a hd=*0x475&0xff+0x7e
if %hd%==127 echo -P:1218 $[0105]除U盘启动盘外无其他硬盘, 按任意键重启! && pause && reboot
:move
set /a hd1=%hd%+1
map (%hd1%) (%hd%)
set /a hd=%hd%-1
if not %hd%==127 goto :move
set /a hd=%hd%+1
map (%hd%) (hd-1)
map --hook
goto :checkos
exit
:checkos
rootnoverify (hd0,0)
find --set-root makeactive --status
if exist ()/windows/system32/version.dll goto :ms
if exist ()/winnt/system32/version.dll goto :ms
goto :noms
exit
::检测硬盘激活分区系统类型
:ms
map --mem ()/windows/system32/version.dll (rd) || map --mem ()/winnt/system32/version.dll (rd)
calc *0x82d0=*0x82d0+*0x82d8-0x800
calc *0x82d8=0x800
cat --locate=\0\0\x44\0\0\0 --number=1 (rd)+1 | set skip=
set /a skip=0x%skip%-0x30
cat --locate=\0\0\0 --skip=%skip% --number=1 (rd)+1 | set skip=
calc *0x82d0=*0x82d0+0x%skip%+3
call Fn.67 *0x82d0 0x60000 3
cat (md)0x300+1,1 | set nt_ver=NT
cat (md)0x300+1,3 | goto :_
:noms
set sys_ver=未知系统
goto :disp
exit
:_5.0
set sys_ver=Windows 2000
goto :disp
exit
:_5.1
set sys_ver=Windows XP
goto :disp
exit
:_5.2
set sys_ver=Windows 2003
goto :disp
exit
:_6.1
set sys_ver=Windows 7/2008
goto :disp
exit
:_6.2
set sys_ver=Windows 8
goto :disp
exit
:disp
set sys_hd=%@root%
clear

[ 本帖最后由 mygamexxx 于 2011-12-5 13:44 编辑 ]
回复

使用道具 举报

3#
发表于 2011-12-5 13:41:42 | 显示全部楼层
哦,明白了,谢谢指教。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-6-15 19:55

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表