hhh333 发表于 2014-4-4 08:21:11

BOOTPART使用中值得注意的问题

1、bootpart组件的构成
三个文件:bootpart.exe bootpart.sys bootpt64.sys,显然后两个是驱动,bootpart.exe是调用它的程序
2、问题
①bootpart.exe 总是到当前目录而不是bootpart.exe 所在的目录中去找SYS文件,这样如果用PECMD来调用,因为默认当前目录是system32,如果将这3个文件放其他文件夹中而不放system32中,则也找不到SYS文件
②bootpart.exe 是一个32位的程序,这样如果在64位系统中将这三个文件放system32(或system32下面的文件夹)中执行,将会找不到SYS文件,因为32位程序在64位中执行时,当前目录自动为wowsys64
③挂载问题 不管是不是U+隐藏,只要是U+,都会进行挂载。如用U+不隐藏做一个U启盘,启动时实际上已经分配了盘符,这个时候如果用bootpart.exe -mount -readonly -driveletter B:则也会出现B:,与前面分配的盘符均指向U+分区,感觉这个象SUBST命令。我觉得mount应该只挂载隐藏区或加一个参数来指明只挂载隐藏区。

2011npwjm 发表于 2014-4-4 08:33:23

进来看看,分享了

fukystone 发表于 2014-4-4 09:00:40

本帖最后由 fukystone 于 2014-4-4 09:02 编辑

嗯?不对吧?
我记得是可以为bootpart单独建目录的,为了保持system32目录下的文件不至于太过混乱,像bootpart和盘符处理这些都是单独提出来的啊,H大用的是哪个版本?
我还专门把天使兄的showdrv修改了一下以支持bootpart的啊,测试是x86和x64通用的,不需要系统中放bootpart的sys文件

hhh333 发表于 2014-4-4 09:54:31

fukystone 发表于 2014-4-4 09:00
嗯?不对吧?
我记得是可以为bootpart单独建目录的,为了保持system32目录下的文件不至于太过混乱,像boot ...

放系统外的文件夹,再在这个文件夹建批处理来用当然是可以的,批处理运行时当前目录直接到了批处理所在的目录。但不能直接用PECMD EXEC botpart.exe xxxx来用。

hhh333 发表于 2014-4-4 10:34:58

本帖最后由 hhh333 于 2014-4-4 10:57 编辑

我刚才又试了一下,确实有上面说的问题:
1、建%Windir%\OrderDRV目录,将3个文件拷进去
2、在PECMD.ini中加 EXEC =!CMD /C "%Windir%\ORDERDRV\bootpart.exe -mount -readonly -driveletter B:"没有用
3、在OrderDRV建一个批处理MountR2B.cmd@echo off
rem 请自行保证系统或当前目录下有:bootpart.exe、bootpart.sys、bootpt64.sys三个文件
pushd %~dp0
bootpart.exe -mount -readonly -driveletter B:

4、再将上述PECMD.ini中命令改成EXEC =!CMD /C "%Windir%\ORDERDRV\MountR2B.cmd" 则OK

又64位中将三个文件放system32中,运行bootpart.exe -mount -readonly -driveletter B:,提示找不到SYS。

上一个图片:

但如果从开始菜单运行中运行"%Windir%\ORDERDRV\bootpart.exe -mount -readonly -driveletter B:"则可以成功。

fukystone 发表于 2014-4-4 11:20:00

哦,是这个意思啊,当时确实遇到这个问题的,我是直接进入目录执行的:
EXEC =!cmd.exe /c "pushd %curdir%\bootpart && bootpart -mount -readonly -driveletter B:"

pseudo 发表于 2014-4-4 11:57:46

写pecmd脚本文件bpart.ini,连同三个文件:bootpart.exe bootpart.sys bootpt64.sys放在某文件夹。
PECMD.ini里直接load脚本bpart.ini,后者直接exec调用bootpart.exe就行了吧。

hhh333 发表于 2014-4-4 12:28:24

pseudo 发表于 2014-4-4 11:57
写pecmd脚本文件bpart.ini,连同三个文件:bootpart.exe bootpart.sys bootpt64.sys放在某文件夹。
PECMD. ...

这个肯定应该行,LOAD时会把当前目录设置到INI所在的位置

zds1210 发表于 2014-4-4 12:35:34

大家好好研究一下,最近同志们的精力都放在U+了。个人感觉没有必要放弃UD.

阿弥陀佛 发表于 2014-4-4 13:26:22

fukystone 发表于 2014-4-4 11:20
哦,是这个意思啊,当时确实遇到这个问题的,我是直接进入目录执行的:
EXEC =!cmd.exe /c "pushd %curdir ...

我是先在文件夹生成批处理再运行批处理,麻烦了不少。受教了

无垠 发表于 2014-6-12 16:07:31

早用了,笨法: 三个文件 system32目录放一份、SYSWOW64目录放一份 pecmd.ini 中 EXEC =!%windir%\SysWOW64\bootpart.exe -mount -driveletter z: 类似的用。

singel 发表于 2014-6-15 22:04:29

用PECMD.EXE PATH %bootpart.exe所在文件夹%行不行?

阿弥陀佛 发表于 2014-6-17 09:24:49

singel 发表于 2014-6-15 22:04
用PECMD.EXE PATH %bootpart.exe所在文件夹%行不行?

pecmd2012可以,使用参数-wd:[*]工作目录   表示设置执行程序的工作目录,有空字符前后用引号,“*”则为文件名取其目录

mdyblog 发表于 2014-6-17 18:49:26

本帖最后由 mdyblog 于 2014-6-17 18:52 编辑

hhh333 发表于 2014-4-4 09:54
放系统外的文件夹,再在这个文件夹建批处理来用当然是可以的,批处理运行时当前目录直接到了批处理所在的 ...

EXEC 有个开关-wd:运行目录 来制定其运行目录

PECMD EXEC-wd:D:\ABCD:\ABC\botpart.exe xxxx


PECMD EXEC-wd:*D:\ABC\botpart.exe    D:\ABC\botpart.exe xxxx

hhh333 发表于 2014-6-17 19:52:57

fukystone 发表于 2014-4-4 11:20
哦,是这个意思啊,当时确实遇到这个问题的,我是直接进入目录执行的:
EXEC =!cmd.exe /c "pushd %curdir ...

这个将批处理中的两个连起来用又要高明一步

hhh333 发表于 2014-6-17 19:56:59

那目前就有好几种了:
1、建批处理执行
2、将批处理语句用&&连起来再用EXEC调用
3、直接利用PECMD的-wd扩展参数来做
4、用PECMD的PATH改变当前目录再直接调用

阿弥陀佛 发表于 2014-6-17 22:32:42

>>③挂载问题 不管是不是U+隐藏,只要是U+,都会进行挂载。如用U+不隐藏做一个U启盘,启动时实际上已经分配了盘符,这个时候如果用bootpart.exe -mount -readonly -driveletter B:则也会出现B:,与前面分配的盘符均指向U+分区,感觉这个象SUBST命令。我觉得mount应该只挂载隐藏区或加一个参数来指明只挂载隐藏区

这个其实是因为bootpart并非挂载隐藏区,而是挂载激活的分区

阿弥陀佛 发表于 2014-6-18 09:25:10

阿弥陀佛 发表于 2014-6-17 22:32
>>③挂载问题 不管是不是U+隐藏,只要是U+,都会进行挂载。如用U+不隐藏做一个U启盘,启动时实际上已经 ...

>>佛大说的是啊,u+的iso在用这个命令,会出现一模一样的两个U盘。怎样解决呢?
解决办法:一,反馈给官方更新
               二,弃用bootpart,改用新版的pecmd2012+新版imdisk(1.72以上),使用扇区映射功能,把想要显示的分区映射出来。有许多优点,1.支持挂载多个分区2.多个隐藏区的时候可以指定自己想要显示的分区,更精确3.卸载更容易,右键-->卸载imdisk虚拟磁盘4.支持纯64位PE(bootpart必须能运行32位程序,因为bootpart.exe是32位程序,而imdisk有64位版本);

JCDN 发表于 2016-8-1 20:43:57

我就看看

JCDN 发表于 2016-8-2 16:53:21

学习,涉及的问题基本都全了

wang1126 发表于 2024-2-27 12:01:10

学习
页: [1]
查看完整版本: BOOTPART使用中值得注意的问题