无忧启动论坛

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

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

    [复制链接]
61#
发表于 2021-1-27 16:25:05 | 显示全部楼层
527104427 发表于 2021-1-27 16:13
根据楼主严苛的测试,NtQuerySystemInformation只能作为备用选项。
注册表更准确


那个注册表 数值 到底是怎么 生成的呢?是系统启动的时候 必生成的么?

点评

这就不懂了,等高手解释咯  详情 回复 发表于 2021-1-27 17:06
回复

使用道具 举报

62#
发表于 2021-1-27 19:43:14 | 显示全部楼层
527104427 发表于 2021-1-27 17:06
这就不懂了,等高手解释咯

我就是想知道 比如:
multi(0)disk(0)rdisk(1)partition(1)
是不是就是 整个硬盘序列的 第一硬盘的第一分区。前面 multi(0)disk(0) 都没有关系?
如果是的话,diskpart 可以来完成下面的操作。只要引导是通过 硬盘来完成的,就行。

点评

原先我跟你想的一样,可事实却很残忍,这个值只是windows放在那里迷惑人的东西,有可能链接到别的分区上,而并非眼睛看到的分区。只能通过API解析这个链接,得到真正的路径。  详情 回复 发表于 2021-1-27 20:20
回复

使用道具 举报

63#
发表于 2021-1-27 22:08:44 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2021-1-27 22:33 编辑
527104427 发表于 2021-1-27 20:20
原先我跟你想的一样,可事实却很残忍,这个值只是windows放在那里迷惑人的东西,有可能链接到别的分区上 ...

看来还真的是个 很让人无语的 注册表标记呀。

如果用 pecmd 的 dll 版, 能否绕过 360?

点评

楼主说 cli 版能过360,我也不清楚  详情 回复 发表于 2021-1-27 22:35
回复

使用道具 举报

64#
发表于 2021-1-27 23:07:09 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2021-1-27 23:44 编辑
527104427 发表于 2021-1-27 22:35
楼主说 cli 版能过360,我也不清楚

那就好办多了,
现弄个 这个,只是用到 pecmd 调用 api 获取了一下 启动卷 分区。
如果 可以绕过 360 ,这个也不失为一个方案。

bcd vol_4.1.7z (2.03 MB, 下载次数: 20)

,如果能过 360 ,可以考虑 不用 diskpart 了。

不知道更换 pecmd.dll  ,能否绕过360
刚测试了一下,用 pecmd_u_cli调用 巨小版DLL  ,能够绕过 360.重新上传了一下。


点评

dll版本,巨小版本,免杀版本,通通会被360追杀啊,前面我有帖子说过了啊!  详情 回复 发表于 2021-1-28 22:40
回复

使用道具 举报

65#
发表于 2021-1-28 10:40:53 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2021-1-28 12:07 编辑

用 pecmd 调用 api 或者 reg  实现 bcd启动分区的 挂载与卸载
具体 可以到 cmd 中设置 模式。


经过测试 可绕过 360 .

bcd_vol_4.2.7z (2.04 MB, 下载次数: 34)

通过pecmd 获取bcd 分区卷,分配盘符
参数 /up 挂载盘符,参数 /d 卸载盘符
如果盘符不是本脚本挂载,就不卸载,如果有盘符,就不挂载







点评

你好! 请问怎么用 autoit 调用 api 获取启动分区的磁盘分区编号? 仅获取启动分区的磁盘分区编号相关信息, 无需挂载启动分区  详情 回复 发表于 2022-4-23 20:42
批处理玩得真6,我以前也玩过一段时间,不过跟老大比起来,望尘莫及啊  详情 回复 发表于 2021-1-28 12:28
回复

使用道具 举报

66#
发表于 2021-1-28 12:43:56 | 显示全部楼层
527104427 发表于 2021-1-28 12:28
批处理玩得真6,我以前也玩过一段时间,不过跟老大比起来,望尘莫及啊

过奖,过奖,pecmd 调用  api 我就不咋明白。
回复

使用道具 举报

67#
发表于 2021-1-28 21:09:47 | 显示全部楼层
pecmd 的 disk 指令 装卸 硬盘分区 ,如果遇到隐藏分区,是需要加参数 ,99


更新下
bcd_vol_4.21.7z (2.04 MB, 下载次数: 44)

回复

使用道具 举报

68#
发表于 2021-1-28 23:36:14 来自手机 | 显示全部楼层
liuzhaoyzz 发表于 2021-1-28 22:40
dll版本,巨小版本,免杀版本,通通会被360追杀啊,前面我有帖子说过了啊!有图有真相啊!
不 ...

我就是想用 DLL版的,结果发现,是一样的,只有原始版没问题。
因为考虑要与 CMD 有信息流交流。
回复

使用道具 举报

69#
发表于 2021-3-16 22:13:28 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2021-3-16 22:19 编辑

通过 api 和 reg 两种方式判断 系统引导分区 ,还是有区别的

api 模式,返回的是 系统启动分区,这个分区不一定是 bcd 分区,可能是 grub4uefi
reg 模式,返回的是 启动系统的 bcd 所在分区。

比如,我用 grub4uefi 虚拟了一个 Svbus 盘,在用 这个虚拟盘 上的  bcd 启动了系统,系统安装了 Svbus驱动,可以识别 这个虚拟盘。

判断系统引导分区,在用 api 方式时,返回的是 grub4uefi 所在分区,而用 reg 时,返回的是 这个 svbus盘


这也间接证明了 ,系统安装时 去找 启动分区 来进行 bcd 写操作,是通过 api 方式确定启动分区的,所以,在制作系统封装时,如果用到了 其他引导器调用微软的 bootmgr_bcd 启动系统,就必须 保证 两个引导器在同一个分区,这个在制作ram系统时也要格外注意。当然系统安装完毕以后,就无所谓了。

回复

使用道具 举报

70#
发表于 2021-6-25 22:21:36 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2021-6-25 22:23 编辑
ESD 发表于 2021-6-23 16:29
请教一下版主,不论是DOS时代菜单的dpx脚本,还是CodeHz的工具,都没有办法在通过光盘引导进pe后,在PE里面 ...

那个 api  的最初目的是 为了 在系统安装的第一次启动时 找到 bcd 并完善之。
你用 光盘启动,这个 api 当然 就找不到了。
不光是光盘启动 找不到,就是 用 grub 启动以后 调用 其他分区的 Bcd 启动,api 也会认为启动分区是 grub 所在分区 ,而注册表 中记录的 是 bcd 所在的分区,此时 安装程序会发现 这个 启动分区(grub) 与启动自身的 bcd 分区 不一致,安装过程也会中止。

另外说一下,用 u 盘启动 pe ,是可以识别到 启动分区是 u盘的。
你的 BIOS调用的启动介质 是 硬盘 u 盘,api 就能找到,唯独只读的 光盘不行。
回复

使用道具 举报

71#
发表于 2021-6-28 16:43:43 | 显示全部楼层
PE下,几个方案综合处理,
逐个对可识别分区,用 PECMD 映射到某盘符,确定分区是否存在WINDOWS,
是否存在BCD,对WINDOWS 文件夹分析,对BCD分析。
这是最常规的办法。
特殊的情况千千万,弄不清楚,比如,我用GRUB调用一个 IMG里的BCD启动系统的,你咋找出来。
所以,能在本地当前系统下通过API找出直接的启动分区,就不错了。


回复

使用道具 举报

72#
发表于 2022-4-26 08:22:40 | 显示全部楼层
Bluebells 发表于 2022-4-23 20:42
你好! 请问怎么用 autoit 调用 api 获取启动分区的磁盘分区编号?
仅获取启动分区的磁盘分区编号相关信息 ...

抱歉 autoit 不是很熟。
回复

使用道具 举报

73#
发表于 2022-4-26 10:32:39 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2022-4-26 10:41 编辑
Bluebells 发表于 2022-4-26 09:49
能否给出你在调用 NtQuerySystemInformation 函数获取启动分区时所使用的参数及其类型? 谢谢!

本帖 ,369楼 就是。
把 cmd 中 的  reg 改为 api ,批处理就会 调用 api 来确定 启动分区,
如果 是reg ,批处理会 通过读取 注册表指定位置,获取 启动分区 ,然后还是要用 api 转化一下格式。

注册表 得到的是bcd 位置分区,api 得到的是 bios 调用的分区。

表达 分区的格式 ,需要用  另外的 api 转一下。不然 ,用不了。

本帖  362楼 是 单独 用 api 方式的 pecmd 脚本。
回复

使用道具 举报

74#
发表于 2022-4-27 12:05:21 | 显示全部楼层
Bluebells 发表于 2022-4-26 14:39
由于 PECMD 只会简单的一些语句, 所以看不懂
其实我只要获取得到启动分区的磁盘分区编号或卷编号就可以 ...

不用知道 原理,只要 拿到结果 就行了。
批处理 调用  pecmd 脚本结果,再拿结果用。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-8 07:37

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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