无忧启动论坛

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

请问下有没有办法用批处理或者命令行小程序确定系统引导分区?

    [复制链接]
91#
 楼主| 发表于 2021-1-7 12:43:05 | 只看该作者
本帖最后由 liuzhaoyzz 于 2021-1-7 12:47 编辑
CodeHz 发表于 2021-1-7 12:12
你先试试用winobj (sys internals 套件里的那个) 管理员权限打开后能不能在我截图的位置看到正确的结果 ...
不知道是哪个,盘符怎么对应的

winobj截图.jpg (87.79 KB, 下载次数: 173)

winobj截图.jpg

点评

又深入研究了一下这几个路径,发现它实际上是系统盘所在路径,而非引导分区。。。  详情 回复 发表于 2021-1-7 13:17
回复

使用道具 举报

92#
发表于 2021-1-7 13:17:57 | 只看该作者
liuzhaoyzz 发表于 2021-1-7 12:43
不知道是哪个,盘符怎么对应的

又深入研究了一下这几个路径,发现它实际上是系统盘所在路径,而非引导分区。。。
回复

使用道具 举报

93#
发表于 2021-1-7 13:33:38 | 只看该作者
继续研究了一下,似乎就是\Device\SystemPartition这个路径对应引导分区,至少在我这里是这样的。。。(关于如何定位分区,你可以可以这样手动找

点评

WIN10里面,\Device\SystemPartition这个路径我都没有找到。 GLOBAL??下也没看到啊?  详情 回复 发表于 2021-1-7 19:17
Windows 7 X64 完整版, 没有这些符号链接. [attachimg]472359[/attachimg]  详情 回复 发表于 2021-1-7 13:44
回复

使用道具 举报

94#
发表于 2021-1-7 13:44:45 | 只看该作者
CodeHz 发表于 2021-1-7 13:33
继续研究了一下,似乎就是\Device\SystemPartition这个路径对应引导分区,至少在我这里是这样的。。。(关 ...

Windows 7 X64 完整版,
没有这些符号链接.

点评

在GLOBAL??下找找看有没有对应的(  详情 回复 发表于 2021-1-7 13:46
回复

使用道具 举报

95#
发表于 2021-1-7 13:46:55 | 只看该作者
plusv 发表于 2021-1-7 13:44
Windows 7 X64 完整版,
没有这些符号链接.

在GLOBAL??下找找看有没有对应的(直接按符号链接排序,找找有没有对应引导分区且有显著标志的

点评

也是没有. WuYou 从昨晚到现在都很卡, 网速只有 0.000-0.030 Mbps, 不传图了  详情 回复 发表于 2021-1-7 13:50
回复

使用道具 举报

96#
发表于 2021-1-7 13:47:37 | 只看该作者
WuYou 从昨晚到现在都很卡,
网速只有 0.000-0.030 Mbps,
传个 78 KB 小图都很久,
快晕了.

点评

我这每次发东西都得刷新才能发出来(也不知道哪里的问题)  详情 回复 发表于 2021-1-7 13:48
回复

使用道具 举报

97#
发表于 2021-1-7 13:48:11 | 只看该作者
plusv 发表于 2021-1-7 13:47
WuYou 从昨晚到现在都很卡,
网速只有 0.000-0.030 Mbps,
传个 78 KB 小图都很久,

我这每次发东西都得刷新才能发出来(也不知道哪里的问题)
回复

使用道具 举报

98#
发表于 2021-1-7 13:50:50 | 只看该作者
CodeHz 发表于 2021-1-7 13:46
在GLOBAL??下找找看有没有对应的(直接按符号链接排序,找找有没有对应引导分区且有显著标志的

也是没有.

WuYou 从昨晚到现在都很卡,
网速只有 0.000-0.030 Mbps,
不传图了
回复

使用道具 举报

99#
发表于 2021-1-7 13:51:08 | 只看该作者
我这边GLOBAL??里磁盘相关的有这些项目

点评

也是没有. [attachimg]472361[/attachimg]  详情 回复 发表于 2021-1-7 14:00
回复

使用道具 举报

100#
发表于 2021-1-7 14:00:33 | 只看该作者
CodeHz 发表于 2021-1-7 13:51
我这边GLOBAL??里磁盘相关的有这些项目

也是没有.


回复

使用道具 举报

101#
 楼主| 发表于 2021-1-7 19:17:34 | 只看该作者
CodeHz 发表于 2021-1-7 13:33
继续研究了一下,似乎就是\Device\SystemPartition这个路径对应引导分区,至少在我这里是这样的。。。(关 ...

WIN10里面,\Device\SystemPartition这个路径我都没有找到。
GLOBAL??下也没看到啊?

点评

难道是新版本特性吗,,我这构建号是21286( 要不你试试按符号链接排序(就是第三列顶部点一下那个),然后找你的引导分区,看看有没有什么特殊的名字指向它  详情 回复 发表于 2021-1-7 19:36
回复

使用道具 举报

102#
发表于 2021-1-7 19:36:36 | 只看该作者
liuzhaoyzz 发表于 2021-1-7 19:17
WIN10里面,\Device\SystemPartition这个路径我都没有找到。
GLOBAL??下也没看到啊?

难道是新版本特性吗,,我这构建号是21286(
要不你试试按符号链接排序(就是第三列顶部点一下那个),然后找你的引导分区,看看有没有什么特殊的名字指向它
回复

使用道具 举报

103#
 楼主| 发表于 2021-1-7 20:14:48 来自手机 | 只看该作者
我看了,好像没找到有价值的线索
回复

使用道具 举报

104#
发表于 2021-1-7 20:28:43 | 只看该作者
liuzhaoyzz 发表于 2021-1-7 08:41
那台电脑在家里。我截图之后出来了,晚点看看。

这么一看似乎就是
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FirmwareBootDevice

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SystemBootDevice
风别为引导盘和启动盘了(

点评

我让他确认过了,这里也对不上号  详情 回复 发表于 2021-1-7 20:33
回复

使用道具 举报

105#
发表于 2021-1-7 21:21:14 | 只看该作者
重写,不再基于dpinfo,UAC开启时需要重启explorer.exe资源管理器中才会显示,管理员命令行操作请忽略。

checkbootpart_v4.7z

1.19 KB, 下载次数: 9, 下载积分: 无忧币 -2

点评

用这个版本,UEFI下从FAT32分区启动xxx.vhd,vhd里面是英文版的win7,为了显示中文目录,国家选择了中文,结果不对。  详情 回复 发表于 2021-1-13 07:43
等下我测试下,谢谢!  详情 回复 发表于 2021-1-8 08:25
回复

使用道具 举报

106#
发表于 2021-1-7 23:24:36 | 只看该作者

不管有用没用,先整一个上来试试(源码比较乱,确认有用再修改一下)

firmware64.exe (6.5 KB, 下载次数: 6)
firmware.exe (4.5 KB, 下载次数: 7)

(需要先过UAC,我没做检查,没权限会崩溃)

点评

firmware 32位的运行出错。 64位的结果不对。  详情 回复 发表于 2021-1-8 12:57
回复

使用道具 举报

107#
 楼主| 发表于 2021-1-8 08:25:21 | 只看该作者
nttwqz 发表于 2021-1-7 21:21
重写,不再基于dpinfo,UAC开启时需要重启explorer.exe资源管理器中才会显示,管理员命令行操作请忽略。

等下我测试下,谢谢!

点评

又完善了一下,加入列表显示,无选中功能,找到时背景绿色,否则红色 https://cowtransfer.com/s/afbf13a2b42541  详情 回复 发表于 2021-1-8 11:32
回复

使用道具 举报

108#
发表于 2021-1-8 11:32:34 来自手机 | 只看该作者
liuzhaoyzz 发表于 2021-1-8 08:25
等下我测试下,谢谢!

又完善了一下,加入列表显示,无选中功能,找到时背景绿色,否则红色
https://cowtransfer.com/s/afbf13a2b42541

点评

76楼图2,测试正确,但是第一次运行有个出错提示。[attachimg]472414[/attachimg] 再次运行正常。 有时候有这个错误。比如从浏览器的下载窗口直接打开bat: [attachimg]472415[/attachimg]  详情 回复 发表于 2021-1-8 13:03
好的,晚点试试。  详情 回复 发表于 2021-1-8 11:53
回复

使用道具 举报

109#
 楼主| 发表于 2021-1-8 11:53:36 | 只看该作者
nttwqz 发表于 2021-1-8 11:32
又完善了一下,加入列表显示,无选中功能,找到时背景绿色,否则红色
https://cowtransfer.com/s/afbf13 ...

好的,晚点试试。
回复

使用道具 举报

110#
 楼主| 发表于 2021-1-8 12:57:17 | 只看该作者
本帖最后由 liuzhaoyzz 于 2021-1-8 16:04 编辑
CodeHz 发表于 2021-1-7 23:24
不管有用没用,先整一个上来试试(源码比较乱,确认有用再修改一下)

测试环境都是WIN8 WIN10,因为WIN7不支持MBR+GPT混合分区启动,未测试。
76楼图1环境: 从ESP分区UEFI启动vhd
firmware 32位的运行出错。
64位的结果好像是对的。

好像是对的。





测试环境76楼图2:从MBR-激活的FAT32分区UEFI启动
firmware 32位的运行出错。
64位的结果好像是对的。





[+] key: FirmwareBootDevice
    [-] arcname: multi(0)disk(0)rdisk(0)partition(1)
    [-] path1: \Device\Harddisk2\Partition1
    [-] path2: \Device\HarddiskVolume1
    [+] mountpoints
       [-] mount point: \??\Volume{ffcb0ea0-0000-0000-0000-200000000000}

BIOS-激活的FAT32分区启动,64位结果应该也是对的。
J:\bak\2下载的文件\判断引导分区\codeHZ>firmware64.exe
[+] key: FirmwareBootDevice
    [-] arcname: multi(0)disk(0)rdisk(0)partition(1)
    [-] path1: \Device\Harddisk2\Partition1
    [-] path2: \Device\HarddiskVolume1
    [+] mountpoints
       [-] mount point: \??\Volume{ffcb0ea0-0000-0000-0000-200000000000}




    [-] path1: \Device\Harddisk2\Partition1,磁盘管理里面有"系统"两个字,是启动分区。












点评

这么神奇吗?我也是读这个位置啊,怎么就不行了呢,难道读注册表也要看人品。。。 [attachimg]472447[/attachimg]  详情 回复 发表于 2021-1-8 18:49
另外是不是需要直接挂载出来呢,这样的话我这里可以省很多计算挂载点的操作,研究了一下,引导分区多半是没默认挂载的)  详情 回复 发表于 2021-1-8 15:35
32位没做过测试就发出来了,看起来是写炸了,一会修一下吧(  详情 回复 发表于 2021-1-8 15:25
回复

使用道具 举报

111#
 楼主| 发表于 2021-1-8 13:03:10 | 只看该作者
本帖最后由 liuzhaoyzz 于 2021-1-8 13:10 编辑
nttwqz 发表于 2021-1-8 11:32
又完善了一下,加入列表显示,无选中功能,找到时背景绿色,否则红色
https://cowtransfer.com/s/afbf13 ...

76楼图1环境,从ESP分区UEFI启动vhd,测试结果正确。ESP挂载正常。



76楼图2环境,从MBR-激活的FAT32分区UEFI启动,测试结果正确,但是第一次运行有个出错提示。

再次运行正常。
有时候有这个错误。比如从浏览器的下载窗口直接打开bat:








点评

错误提示不知道什么意思,看起来结果正常显示,我可以将错误屏蔽bcdedit错误不得而知,手动试试能不能显示菜单。  详情 回复 发表于 2021-1-8 14:37
回复

使用道具 举报

112#
发表于 2021-1-8 14:37:12 来自手机 | 只看该作者
liuzhaoyzz 发表于 2021-1-8 13:03
76楼图1环境,从ESP分区UEFI启动vhd,测试结果正确。ESP挂载正常。



错误提示不知道什么意思,看起来结果正常显示,我可以将错误屏蔽bcdedit错误不得而知,手动试试能不能显示菜单。

点评

从浏览器的下载窗口直接打开bat,可能是因为32位浏览器或者文件管理器,调用了bcdedit是32位的,无法调用64位的导致出错。  详情 回复 发表于 2021-1-8 16:13
回复

使用道具 举报

113#
发表于 2021-1-8 15:25:56 来自手机 | 只看该作者
liuzhaoyzz 发表于 2021-1-8 12:57
测试环境都是WIN8 WIN10,因为WIN7不支持MBR+GPT混合分区启动,未测试。
76楼图1环境: 从ESP分区UEFI启动 ...

32位没做过测试就发出来了,看起来是写炸了,一会修一下吧(

点评

32位的程序具有更好的通用性,希望能够在xp下面运行,通杀xp WIN7 8 10,不然的话,批处理调用,还要判断系统版本,稍嫌麻烦。  详情 回复 发表于 2021-1-8 16:24
回复

使用道具 举报

114#
发表于 2021-1-8 15:35:19 | 只看该作者
liuzhaoyzz 发表于 2021-1-8 12:57
测试环境都是WIN8 WIN10,因为WIN7不支持MBR+GPT混合分区启动,未测试。
76楼图1环境: 从ESP分区UEFI启动 ...

另外是不是需要直接挂载出来呢,这样的话我这里可以省很多计算挂载点的操作,研究了一下,引导分区多半是没默认挂载的)

点评

如果能够挂载出来分配个盘符最好,最好还提供个卸载盘符的参数,如果没有提供卸载盘符的参数,也没有什么。  详情 回复 发表于 2021-1-8 16:07
回复

使用道具 举报

115#
发表于 2021-1-8 15:57:15 | 只看该作者
本帖最后由 CodeHz 于 2021-1-8 16:04 编辑

(然后一顿研究之后我发现一个最最最简单的方法。。。
直接 mountvol X: /S
然后在管理员会话里X盘就是当前的EFI系统分区了。。。(非PE下的话,只有经过UAC的进程能看到那个分区,而explorer是自动弃权的,所以explorer是看不到那个分区的)


PS:经过一顿研究,普通用户即使通过一些手段打开了目录,也没法访问,权限不够而且没法修改(((

点评

关闭explorer进程并以管理员权限打开就能看到了。 试了一台,挂载操作对于EFI启动的7不成功,该系统也无法读取bcd  详情 回复 发表于 2021-1-8 17:00
mountvol X: /S这个操作肯定是不行的,似乎只能适用于一个硬盘一个ESP分区的情况。不具有适用性。 guyue2011写的工具挺好用的:挂载GPT硬盘的ESP分区工具--FindESP2.0 - PE讨论区 - 无忧启动论坛 - Powered  详情 回复 发表于 2021-1-8 16:11
回复

使用道具 举报

116#
 楼主| 发表于 2021-1-8 16:07:17 | 只看该作者
CodeHz 发表于 2021-1-8 15:35
另外是不是需要直接挂载出来呢,这样的话我这里可以省很多计算挂载点的操作,研究了一下,引导分区多半是 ...

        如果能够挂载出来分配个盘符最好,最好还提供个卸载盘符的参数,如果没有提供卸载盘符的参数,也没有什么。

点评

你看看上面mountvol的方法win7是否有效(这个是最方便的方法了)  发表于 2021-1-8 16:10
回复

使用道具 举报

117#
 楼主| 发表于 2021-1-8 16:11:44 | 只看该作者
本帖最后由 liuzhaoyzz 于 2021-1-8 16:15 编辑
CodeHz 发表于 2021-1-8 15:57
(然后一顿研究之后我发现一个最最最简单的方法。。。
直接 mountvol X: /S
然后在管理员会话里X盘就是当 ...

        mountvol X: /S这个操作肯定是不行的,似乎只能适用于一个硬盘一个ESP分区的情况。不具有适用性。这个命令真的很渣!
guyue2011写的工具挺好用的:挂载GPT硬盘的ESP分区工具--FindESP2.0 - PE讨论区 - 无忧启动论坛 - Powered by Discuz! http://bbs.wuyou.net/forum.php?mod=viewthread&tid=374167
findESP -mount
findESP -unmount
可以挂载所有本地硬盘的ESP分区,也可以卸载本地硬盘所有的ESP分区。(不支持优盘移动硬盘,这个我没有需求)

另外,盘符写入权限的问题,感觉比较麻烦。如果以内置的超级管理员身份登陆好像ESP写入没问题,如果以administrators组的成员访问,或者更低权限的用户访问可能就有问题。这个似乎不在讨论之列,能够实现找到并挂载这个引导分区就行了,剩下的事情让用户自己搞定吧。

点评

[attachimg]472441[/attachimg] 但是我研究了一下,它的原理和我的程序的原理是一致的,也是读取注册表的设置,然后再挂载的 (而且我还为此专门逆向了内核,发现它也是这样获取引导分区的,所以其他方法大概不会  详情 回复 发表于 2021-1-8 16:25
回复

使用道具 举报

118#
 楼主| 发表于 2021-1-8 16:13:48 | 只看该作者
nttwqz 发表于 2021-1-8 14:37
错误提示不知道什么意思,看起来结果正常显示,我可以将错误屏蔽bcdedit错误不得而知,手动试试能不能显 ...

从浏览器的下载窗口直接打开bat,可能是因为32位浏览器或者文件管理器,调用了bcdedit是32位的,无法调用64位的导致出错。
回复

使用道具 举报

119#
 楼主| 发表于 2021-1-8 16:20:27 | 只看该作者
本帖最后由 liuzhaoyzz 于 2021-1-9 09:30 编辑
你看看上面mountvol的方法win7是否有效(这个是最方便的方法了)


mountvol的方法,适用于XP WIN7 8 10好像。问题是mountvol X: /S这样的肯定不适合的。
mountvol z: \\?\Volume{5a006011-0000-0000-0000-100000000000}\
这样子的命令是具有较好的通用性的,但是需要知道分区的UUID,这样子的命令不但可以挂载ESP盘符,FAT32/NTFS盘符挂载都没问题的。如果你能用windows API在程序内部实现更好,如果不能实现或实现起来费事,就用windows的
mountvol实现也行。

mountvol X: /S这个命令比较渣,建议放弃。

点评

我也考虑过,但是发现mountvol列表至少我的电脑分配完了esp分区没出来,只有/s参数能出来,所以最后用了wmic获取没分配盘符的分区的guid,再用mountvol分配。  详情 回复 发表于 2021-1-8 17:04
回复

使用道具 举报

120#
 楼主| 发表于 2021-1-8 16:24:45 | 只看该作者
CodeHz 发表于 2021-1-8 15:25
32位没做过测试就发出来了,看起来是写炸了,一会修一下吧(

32位的程序具有更好的通用性,希望能够在xp下面运行,通杀xp WIN7 8 10,不然的话,批处理调用,还要判断系统版本,稍嫌麻烦。        
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-20 21:23

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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