无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 15724|回复: 27
打印 上一主题 下一主题

BOOTPART使用中值得注意的问题

[复制链接]
跳转到指定楼层
1#
发表于 2014-4-4 08:21:11 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
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应该只挂载隐藏区或加一个参数来指明只挂载隐藏区。
2#
发表于 2014-4-4 08:33:23 | 只看该作者
进来看看,分享了
回复

使用道具 举报

3#
发表于 2014-4-4 09:00:40 | 只看该作者
本帖最后由 fukystone 于 2014-4-4 09:02 编辑

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

点评

放系统外的文件夹,再在这个文件夹建批处理来用当然是可以的,批处理运行时当前目录直接到了批处理所在的目录。但不能直接用PECMD EXEC botpart.exe xxxx来用。  详情 回复 发表于 2014-4-4 09:54
回复

使用道具 举报

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

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

点评

EXEC 有个开关 -wd:运行目录 来制定其运行目录 PECMD EXEC -wd:D:\ABC D:\ABC\botpart.exe xxxx  详情 回复 发表于 2014-6-17 18:49
回复

使用道具 举报

5#
 楼主| 发表于 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
  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:"则可以成功。
回复

使用道具 举报

6#
发表于 2014-4-4 11:20:00 | 只看该作者
哦,是这个意思啊,当时确实遇到这个问题的,我是直接进入目录执行的:
EXEC =!cmd.exe /c "pushd %curdir%\bootpart && bootpart -mount -readonly -driveletter B:"

点评

这个将批处理中的两个连起来用又要高明一步  详情 回复 发表于 2014-6-17 19:52
我是先在文件夹生成批处理再运行批处理,麻烦了不少。受教了  详情 回复 发表于 2014-4-4 13:26
回复

使用道具 举报

7#
发表于 2014-4-4 11:57:46 | 只看该作者
写pecmd脚本文件bpart.ini,连同三个文件:bootpart.exe bootpart.sys bootpt64.sys放在某文件夹。
PECMD.ini里直接load脚本bpart.ini,后者直接exec调用bootpart.exe就行了吧。

点评

这个肯定应该行,LOAD时会把当前目录设置到INI所在的位置  详情 回复 发表于 2014-4-4 12:28
回复

使用道具 举报

8#
 楼主| 发表于 2014-4-4 12:28:24 | 只看该作者
pseudo 发表于 2014-4-4 11:57
写pecmd脚本文件bpart.ini,连同三个文件:bootpart.exe bootpart.sys bootpt64.sys放在某文件夹。
PECMD. ...

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

使用道具 举报

9#
发表于 2014-4-4 12:35:34 | 只看该作者
大家好好研究一下,最近同志们的精力都放在U+了。个人感觉没有必要放弃UD.
回复

使用道具 举报

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

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

使用道具 举报

11#
发表于 2014-6-12 16:07:31 | 只看该作者
早用了,笨法: 三个文件 system32目录放一份、SYSWOW64目录放一份 pecmd.ini 中 EXEC =!%windir%\SysWOW64\bootpart.exe -mount -driveletter z: 类似的用。
回复

使用道具 举报

12#
发表于 2014-6-15 22:04:29 来自手机 | 只看该作者
用PECMD.EXE PATH %bootpart.exe所在文件夹%行不行?

点评

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

使用道具 举报

13#
发表于 2014-6-17 09:24:49 | 只看该作者
singel 发表于 2014-6-15 22:04
用PECMD.EXE PATH %bootpart.exe所在文件夹%行不行?

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

    使用道具 举报

    14#
    发表于 2014-6-17 18:49:26 | 只看该作者
    本帖最后由 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
    回复

    使用道具 举报

    15#
     楼主| 发表于 2014-6-17 19:52:57 | 只看该作者
    fukystone 发表于 2014-4-4 11:20
    哦,是这个意思啊,当时确实遇到这个问题的,我是直接进入目录执行的:
    EXEC =!cmd.exe /c "pushd %curdir ...

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

    使用道具 举报

    16#
     楼主| 发表于 2014-6-17 19:56:59 | 只看该作者
    那目前就有好几种了:
    1、建批处理执行
    2、将批处理语句用&&连起来再用EXEC调用
    3、直接利用PECMD的-wd扩展参数来做
    4、用PECMD的PATH改变当前目录再直接调用
    回复

    使用道具 举报

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

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

    点评

    >>佛大说的是啊,u+的iso在用这个命令,会出现一模一样的两个U盘。怎样解决呢? 解决办法:一,反馈给官方更新 二,弃用bootpart,改用新版的pecmd2012+新版imdisk(1.72以上),使用扇区映射功能,  详情 回复 发表于 2014-6-18 09:25
    佛大说的是啊,u+的iso在用这个命令,会出现一模一样的两个U盘。怎样解决呢?  发表于 2014-6-18 09:16
    回复

    使用道具 举报

    18#
    发表于 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位版本);
    回复

    使用道具 举报

    19#
    发表于 2016-8-1 20:43:57 | 只看该作者
    我就看看
    回复

    使用道具 举报

    20#
    发表于 2016-8-2 16:53:21 | 只看该作者
    学习,涉及的问题基本都全了
    回复

    使用道具 举报

    21#
    发表于 2024-2-27 12:01:10 | 只看该作者
    学习
    回复

    使用道具 举报

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

    本版积分规则

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

    闽公网安备 35020302032614号

    GMT+8, 2024-11-28 16:23

    Powered by Discuz! X3.3

    © 2001-2017 Comsenz Inc.

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