双响炮 发表于 2018-8-19 12:23:54

求一个PE下获取系统盘符的批处理

原帖在这里:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=410207&extra=page%3D2
现在的思路是:查找第一个大于1G的盘符就是原系统盘符。
考虑到要用到批处理,如果到DOS专区来提问,应该更能得到DOS高手们的关注,有劳各位帮帮忙!

易广白 发表于 2018-8-19 12:59:19

可是许多品牌机有许多大于1G的盘符,并且系统分区夹在中间……

自动化的前提是:硬件、软件、流程…统一…标准化,否则可能“害人害己”

nttwqz 发表于 2018-8-19 14:04:10

楼主如果只是需要确定原系统盘盘符,而不是查找第一个可以作为系统盘的盘符,只需要确定explorer.exe存在即可

窄口牛 发表于 2018-8-19 14:09:44

他还想考虑空盘,难度很大。

双响炮 发表于 2018-8-19 16:27:36

易广白 发表于 2018-8-19 12:59
可是许多品牌机有许多大于1G的盘符,并且系统分区夹在中间……

自动化的前提是:硬件、软件、流程…统一 ...

除了硬件,其它你说的自动化前提全都有,所有的均为我本人操作,且只在小范围内使用。

双响炮 发表于 2018-8-19 16:42:26

由于只是小范围使用,所有流程能做到统一标准,所以实际上对于我来说,我分区只有两种情况:64位系统分区依次是ESP,MSR,WINDOWS,RECOVERY,SOFT,而32位系统分区依次是MSR,WINDOWS,RECOVERY,SOFT。所以说要找到需要恢复系统的分区其实就是这个WINDOWS,按nttwqz老大上次的方法确实非常好,只是我考虑到一些特殊情况而已,比如该分区文件不能被读取了或者被格式化了,但它们分区大小是不会变的(这也不是考虑空盘,如果分区大小就变了,那也就不在本文讨论的范围了{:1_186:})。刚好ESP和MSR这两个分区也只是不到500M,所以才会想到请大家帮忙与个批处理的。{:1_194:}

双响炮 发表于 2018-8-19 16:57:01

nttwqz 发表于 2018-8-19 14:04
楼主如果只是需要确定原系统盘盘符,而不是查找第一个可以作为系统盘的盘符,只需要确定explorer.exe存在即 ...

PE系统的X盘也会用这个EXPLORER.EXE呀{:1_194:},不过对于我本人亲自分区安装的系统来说,原系统盘一定是第一个可以作为系统盘的{:1_186:}
比如现在手里的老机器

dos时代菜鸟 发表于 2018-8-19 19:40:05

寻找bcd 中 的系统定位。直接找到 系统所在盘。

2012jiashanni 发表于 2018-8-20 08:28:00

如果你经过桌面环境那么往系统写标记文件 跟配置文件 然后进pe搜索配置文件跟标记文件 来确定系统盘如果不经过直接进pe 那么搜索explorer   同时不搜索x盘另外你说的这些 最好用编程语言而不是批处理

2010techon 发表于 2018-8-20 10:58:31

查找源系统特有的启动文件和关键目录,都存在即可判定为系统盘

双响炮 发表于 2018-8-21 13:32:56

dos时代菜鸟 发表于 2018-8-19 19:40
寻找bcd 中 的系统定位。直接找到 系统所在盘。

这是个好主意,具体咋操作能再指点下么,为这学了几天批处理,收获好大,但时间不等我{:1_185:}

双响炮 发表于 2018-8-21 13:34:29

2012jiashanni 发表于 2018-8-20 08:28
如果你经过桌面环境那么往系统写标记文件 跟配置文件 然后进pe搜索配置文件跟标记文件 来确定系统盘如 ...

感谢感谢,又是个新思路{:1_195:}

2012jiashanni 发表于 2018-8-21 15:49:37

双响炮 发表于 2018-8-21 13:32
这是个好主意,具体咋操作能再指点下么,为这学了几天批处理,收获好大,但时间不等我

并不是一个很好的注意 PE下你无法读取到BCD 只能先搜索BCD 用户双硬盘双系统你就会搜索错误 另外也有部分用户可能出现多个BCD的例如第一次装系统 把BCD写入到硬盘2的第一分区BIOS设置为硬盘2启动第二次装引导到硬盘1 但是没有清空硬盘2的bcd你就会搜索错误 另外多个系统情况下 你也无法搜索系统 又或者XP单系统   目前最稳定的就是在桌面环境下往当前系统下写入一个乱字符串的标记要唯一的然后写入配置文件 在PE端启动的时候程序搜索配置文件并读取搜索标记文件 另外最好用编程语言 而不是批处理 你可以参考现在一键Ghost用的原理找到他的DOS模块 里面有批处理 他的原理就是搜索特定文件来确定盘符进行还原 但是这种办法很不推荐 有漏洞

dos时代菜鸟 发表于 2018-8-24 15:36:31

2012jiashanni 发表于 2018-8-21 15:49
并不是一个很好的注意 PE下你无法读取到BCD 只能先搜索BCD 用户双硬盘双系统你就会搜索错误 另外也有部分 ...

bcd 设置的内容是否正确 是可以检测的。

2012jiashanni 发表于 2018-8-24 16:27:49

dos时代菜鸟 发表于 2018-8-24 15:36
bcd 设置的内容是否正确 是可以检测的。

我之前开发自动获取引导分区的功能 也是搜索BCD 后来遇到这么一情况硬盘12用户引导的是2硬盘 由于用户没有正确安装windows 导致 硬盘 12 都存在有BCD 硬盘1的BCD是正确的 但是没有系统

2012jiashanni 发表于 2018-8-24 16:30:18

dos时代菜鸟 发表于 2018-8-24 15:36
bcd 设置的内容是否正确 是可以检测的。

另外双系统情况下 搜索到BCD了并且分析了盘符 可是怎么确定你要还原的是哪个盘符呢?给用户选择要安装到哪个分区 那还不如直接判断哪个分区有windows\explorer.exe

dos时代菜鸟 发表于 2018-8-27 08:58:39

2012jiashanni 发表于 2018-8-24 16:30
另外双系统情况下 搜索到BCD了并且分析了盘符 可是怎么确定你要还原的是哪个盘符呢?给用户选择要安装 ...

有的硬盘系统是 vhd ,你怎么找 explorer.exe?
还是绕不过 bcd

nttwqz 发表于 2018-8-27 09:46:06

dos时代菜鸟 发表于 2018-8-27 08:58
有的硬盘系统是 vhd ,你怎么找 explorer.exe?
还是绕不过 bcd

商用的场合哪里有什么vhd呀

2012jiashanni 发表于 2018-8-27 10:38:37

dos时代菜鸟 发表于 2018-8-27 08:58
有的硬盘系统是 vhd ,你怎么找 explorer.exe?
还是绕不过 bcd

找到BCD 多系统下那怎么找要还原哪个盘符呢 还不是要标记要还原的盘符?

dos时代菜鸟 发表于 2018-8-29 07:21:29

2012jiashanni 发表于 2018-8-27 10:38
找到BCD 多系统下那怎么找要还原哪个盘符呢 还不是要标记要还原的盘符?

bcdedit 查看 bcd 配置 直接就 转换出来了盘符显示了。

2012jiashanni 发表于 2018-8-29 08:28:46

dos时代菜鸟 发表于 2018-8-29 07:21
bcdedit 查看 bcd 配置 直接就 转换出来了盘符显示了。

楼主要的不是找哪个分区下有系统而是自动确定哪个盘符要自动还原 他的需求我早开发过了 你可以去看看我的装机助理 就是这个原理

dos时代菜鸟 发表于 2018-8-29 10:00:32

本帖最后由 dos时代菜鸟 于 2018-8-29 10:04 编辑

2012jiashanni 发表于 2018-8-29 08:28
楼主要的不是找哪个分区下有系统而是自动确定哪个盘符要自动还原 他的需求我早开发过了 你可以去看看我的 ...

最近忙,没时间研究,既然有现成的,拿来用就是了。呵呵。
条条大道通罗马,何必单走一条路?思路,算法,都是要经过实践检验的。
功能与需求有关,能够满足眼前需求就行呗。

个人觉得 没必要 争论这玩意儿了。

如果 另有其他需求 需要我的思路和算法的,自然 就 用了。

我说的就是个思路,用不用是楼主的事情 ,跟 你 我 都没有关系。

双响炮 发表于 2018-8-29 11:17:44

dos时代菜鸟 发表于 2018-8-29 10:00
最近忙,没时间研究,既然有现成的,拿来用就是了。呵呵。
条条大道通罗马,何必单走一条路?思路,算 ...

感谢老大提供思路,虽然问题现在仍然没有完美解决,但我这时间确实GET到了好多知识,所以还是蛮满足的,再次感谢大家!

双响炮 发表于 2018-8-29 11:18:53

2012jiashanni 发表于 2018-8-29 08:28
楼主要的不是找哪个分区下有系统而是自动确定哪个盘符要自动还原 他的需求我早开发过了 你可以去看看我的 ...

马上找到去学习,希望遇到问题的时候老大能不吝赐教!

victor888 发表于 2018-12-31 22:11:49

2012jiashanni 发表于 2018-8-29 08:28
楼主要的不是找哪个分区下有系统而是自动确定哪个盘符要自动还原 他的需求我早开发过了 你可以去看看我的 ...

你这个没有源码啊?

2012jiashanni 发表于 2018-12-31 22:20:34

victor888 发表于 2018-12-31 22:11
你这个没有源码啊?

???

江南一根葱 发表于 2019-1-3 10:31:19

之前做过个“系统拆迁”批处理,全自动还原

是根据强制卷标来判断的

listen_run 发表于 2021-3-12 12:19:34

2012jiashanni 发表于 2018-8-21 15:49
并不是一个很好的注意 PE下你无法读取到BCD 只能先搜索BCD 用户双硬盘双系统你就会搜索错误 另外也有部分 ...

什么漏洞?

2012jiashanni 发表于 2021-3-12 17:11:50

listen_run 发表于 2021-3-12 12:19
什么漏洞?

因为他是固定了 如果用户双系统情况下 都用过同款软件 那么就会有两个相同的文件 会导致搜索错误 还原错误目前最好的办法是 用GUID方式 也就是全局唯一标识符生成一个GUID 并将标记文件命名为GUID 然后将GUID写入配置文件 在自动还原的时候 先读取配置文件里的GUID 然后再搜索所有盘符下此文件名

dos时代菜鸟 发表于 2021-3-12 19:27:11

系统还原这玩意儿,是未雨绸缪,要在系统坏之前做足工作,才能在 系统坏的时候 开展维护还原。
而 系统坏之前 要做些啥,系统又该如何还原,都取决于 系统还原功能的设计理念。

而且,很多时候是,今天你给某个小白装好了系统,明天系统就被他搞坏了,他会找另一个人来给他从新做系统,你之前的 未雨绸缪 做的那些准备工作 和你设计好 系统还原 功能 也就等同于 白费了。所以我现在 ,很少再考虑系统还原这个东西了。自己用,不需要,给别人用,别人未必买账。

页: [1] 2
查看完整版本: 求一个PE下获取系统盘符的批处理