无忧启动论坛

标题: BOOTPART使用中值得注意的问题 [打印本页]

作者: hhh333    时间: 2014-4-4 08:21
标题: 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
进来看看,分享了
作者: fukystone    时间: 2014-4-4 09:00
本帖最后由 fukystone 于 2014-4-4 09:02 编辑

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

放系统外的文件夹,再在这个文件夹建批处理来用当然是可以的,批处理运行时当前目录直接到了批处理所在的目录。但不能直接用PECMD EXEC botpart.exe xxxx来用。
作者: hhh333    时间: 2014-4-4 10:34
本帖最后由 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
  1. @echo off
  2. rem 请自行保证系统或当前目录下有:bootpart.exe、bootpart.sys、bootpt64.sys三个文件
  3. pushd %~dp0
  4. 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
哦,是这个意思啊,当时确实遇到这个问题的,我是直接进入目录执行的:
EXEC =!cmd.exe /c "pushd %curdir%\bootpart && bootpart -mount -readonly -driveletter B:"
作者: pseudo    时间: 2014-4-4 11:57
写pecmd脚本文件bpart.ini,连同三个文件:bootpart.exe bootpart.sys bootpt64.sys放在某文件夹。
PECMD.ini里直接load脚本bpart.ini,后者直接exec调用bootpart.exe就行了吧。
作者: hhh333    时间: 2014-4-4 12:28
pseudo 发表于 2014-4-4 11:57
写pecmd脚本文件bpart.ini,连同三个文件:bootpart.exe bootpart.sys bootpt64.sys放在某文件夹。
PECMD. ...

这个肯定应该行,LOAD时会把当前目录设置到INI所在的位置
作者: zds1210    时间: 2014-4-4 12:35
大家好好研究一下,最近同志们的精力都放在U+了。个人感觉没有必要放弃UD.
作者: 阿弥陀佛    时间: 2014-4-4 13:26
fukystone 发表于 2014-4-4 11:20
哦,是这个意思啊,当时确实遇到这个问题的,我是直接进入目录执行的:
EXEC =!cmd.exe /c "pushd %curdir ...

我是先在文件夹生成批处理再运行批处理,麻烦了不少。受教了
作者: 无垠    时间: 2014-6-12 16:07
早用了,笨法: 三个文件 system32目录放一份、SYSWOW64目录放一份 pecmd.ini 中 EXEC =!%windir%\SysWOW64\bootpart.exe -mount -driveletter z: 类似的用。
作者: singel    时间: 2014-6-15 22:04
用PECMD.EXE PATH %bootpart.exe所在文件夹%行不行?
作者: 阿弥陀佛    时间: 2014-6-17 09:24
singel 发表于 2014-6-15 22:04
用PECMD.EXE PATH %bootpart.exe所在文件夹%行不行?

pecmd2012可以,使用参数-wd:
  • 工作目录   表示设置执行程序的工作目录,有空字符前后用引号,“*”则为文件名取其目录
    作者: mdyblog    时间: 2014-6-17 18:49
    本帖最后由 mdyblog 于 2014-6-17 18:52 编辑
    hhh333 发表于 2014-4-4 09:54
    放系统外的文件夹,再在这个文件夹建批处理来用当然是可以的,批处理运行时当前目录直接到了批处理所在的 ...


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

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


    PECMD EXEC  -wd:*D:\ABC\botpart.exe    D:\ABC\botpart.exe xxxx
    作者: hhh333    时间: 2014-6-17 19:52
    fukystone 发表于 2014-4-4 11:20
    哦,是这个意思啊,当时确实遇到这个问题的,我是直接进入目录执行的:
    EXEC =!cmd.exe /c "pushd %curdir ...

    这个将批处理中的两个连起来用又要高明一步
    作者: hhh333    时间: 2014-6-17 19:56
    那目前就有好几种了:
    1、建批处理执行
    2、将批处理语句用&&连起来再用EXEC调用
    3、直接利用PECMD的-wd扩展参数来做
    4、用PECMD的PATH改变当前目录再直接调用
    作者: 阿弥陀佛    时间: 2014-6-17 22:32
    >>③挂载问题 不管是不是U+隐藏,只要是U+,都会进行挂载。如用U+不隐藏做一个U启盘,启动时实际上已经分配了盘符,这个时候如果用bootpart.exe -mount -readonly -driveletter B:则也会出现B:,与前面分配的盘符均指向U+分区,感觉这个象SUBST命令。我觉得mount应该只挂载隐藏区或加一个参数来指明只挂载隐藏区

    这个其实是因为bootpart并非挂载隐藏区,而是挂载激活的分区
    作者: 阿弥陀佛    时间: 2014-6-18 09:25
    阿弥陀佛 发表于 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
    我就看看
    作者: JCDN    时间: 2016-8-2 16:53
    学习,涉及的问题基本都全了
    作者: wang1126    时间: 2024-2-27 12:01
    学习




    欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3