无忧启动论坛

标题: 向U盘上的隐藏分区或无盘符的不可访问的分区写文件的新方法 [打印本页]

作者: disktool    时间: 2015-8-31 00:24
标题: 向U盘上的隐藏分区或无盘符的不可访问的分区写文件的新方法
本帖最后由 disktool 于 2015-8-31 09:37 编辑

技术人员在制作U盘PE时,可能需要向U盘上的隐藏分区写入用于启动PE的文件。
U盘上的分区有一定的特殊性,普及下知识:
通常U盘上只有一个分区,如果U盘上创建两个或多个分区时,除一个分区外,其它分区都是没有盘符的同时也是无法分区盘符的分区,如果分区没有盘符,那么无法访问,就很难向U盘上的第二个,第三个分区写入文件。不过也有工具能解决这个问题,BOOTICE提供了一个功能能为U盘的第二个分区写文件。不过这个功能对于经常要向U盘写文件同时又需要测试U盘PE的技术人员来说有点不便,不可能总是手动的在BOOTICE上切换来切换去的。如果只是偶尔写下文件,这个工具就可以解决了。如果经常写文件,那么现在可以使用最新的分区助手6.1.1的命令行,此命令行现在支持向U盘上的隐藏分区和无盘符的分区自动的写文件。具体的命令如下:

向隐藏分区的根目录写文件和文件夹
partassist.exe /hd:0 /whide:0 /src:C:\file.txt
partassist.exe /hd:0 /whide:0 /src:C:\folder

向隐藏分区的子目录写文件和文件夹
partassist.exe /hd:0 /whide:0 /src:C:\file.txt /dest:subfolder
partassist.exe /hd:0 /whide:0 /src:C:\folder /dest:dir\subfolder

注:

* /hd后根磁盘编号,/whide后根分区的编号,编号都是从0开始。
* 可以使用partassist.exe /list和partassist.exe /list:0来列出隐藏分区的磁盘号和分区号是什么。
* /src为需要写的文件或目录路径,/dest为目标位置。


分区助手命令行的全面介绍,也可以看这个帖子:
http://bbs.wuyou.net/forum.php?m ... 0160&extra=page%3D1

之所有分区助手支持向隐藏分区写文件,也是无忧论坛上一些技术达人的强烈建议:独剑,兔小贝KVA与uepon等,Thanks for these suggestions.


作者: 贝壳iT    时间: 2015-8-31 07:42
本帖最后由 贝壳iT 于 2015-8-31 07:54 编辑

为了后期检测隐藏的EFI分区是否存在、完好,以及EFI分区里面的关键文件的存在进行验证,完善制作工具的性能与功能建议新增读取隐藏区指定文件并返回文件是否存在的值。目前我采用 partassist.exe /list:2 /out:data\1.txt 然后来判断返回值里面是否存在特定分区,从而知道数据区、EFI区是否还在。
但是无法判断文件,如果判断文件我只能通过其他方式显示出EFI分区进行判断

升级:目前后期升级要么选择覆盖模式要么就是格式化EFI隐藏区(到达清空分区内文件)后从新写入新文件。
建议新增删除指定分区内所有文件的功能,从而不操作磁盘格式。
比如 partassist.exe /hd:2 /whide:1 /del:*.* 表示清空磁盘2的1号分区内的文件,匹配规则是*.*
比如 partassist.exe /hd:2 /whide:1 /del:*.exe 表示清空磁盘2的1号分区内的文件,匹配规则是*.exe

格式化新增对EXFAT格式的支持

新增分配盘符为自动并返回设定成功的盘符
比如:partassist.exe /hd:2 /setletter:0 /letter:*
/letter: 参数后面不指定盘符的时候则根据系统来判断自动添加盘符,检测未有占用 A B C D ...,设置成功 并返回"F"

目前是 partassist.exe /hd:2 /setletter:0 /letter:U ‘如果U本来存在会很麻烦

非常感谢,PartAssist非常强大。采用 PartAssist 来完成分区的创建与操作是一件很高效且稳定的事情,不在担心采用其他方式创建分区后磁盘编号变化经常无法锁定或者正常的指派问题。
作者: engineerlzk    时间: 2015-8-31 09:00
* /hd后根磁盘编号,/whide后根分区的编号,编号都是从0开始。
这个估计得先仔细看清楚写入的U盘到底是哪个编号
作者: disktool    时间: 2015-8-31 09:43
本帖最后由 disktool 于 2015-8-31 09:47 编辑
贝壳iT 发表于 2015-8-31 07:42
为了后期检测隐藏的EFI分区是否存在、完好,以及EFI分区里面的关键文件的存在进行验证,完善制作工具的性能 ...


OK,非常感谢你的升级建议。这些建议都很好,之前独剑也提到过,后面升级会尽量加入。再次谢谢。
作者: disktool    时间: 2015-8-31 09:44
engineerlzk 发表于 2015-8-31 09:00
* /hd后根磁盘编号,/whide后根分区的编号,编号都是从0开始。
这个估计得先仔细看清楚写入的U盘到底是哪 ...

可以使用partassist.exe /list和partassist.exe /list:0来列出隐藏分区的磁盘号和分区号是什么。比较方便查找出来。
作者: yaojy    时间: 2015-8-31 11:08
BOOTICE就是切换来切换去的,似乎有点烦,但在explorer的shell下操作,直观,可以通过鼠标选择、复制、粘贴和删除,比较适合“微软视窗患者”。
楼主的方法比较适合喜欢黑暗世界“CMD”shell患者。进行大批量U盘修改后测试则更为方便。问题是普通使用者几乎没这种需求。
作者: zds1210    时间: 2015-8-31 12:58
本帖最后由 zds1210 于 2015-8-31 13:16 编辑

不错,bootice切换法比较适合手工制作;也可用bootpatr或imdisk可写挂载来复制文件。
当然,如果编程来实现,目前用bootice切换法,问题比较多,有时候切换失败,延迟问题,导致分区数据写入失败。
分区助手命令行,直接向隐藏分区写文件,不分配盘符,不改变盘符,实测效果比较好,实现起来相当简洁,相当喜欢。
贝壳兄弟提到的一些建议,也可以采取。
作者: zds1210    时间: 2015-8-31 13:01
目前还有一个想法,如果分区助手能实现直接把打包的iso写入隐藏efi区,就更爽。
作者: disktool    时间: 2015-8-31 16:44
zds1210 发表于 2015-8-31 12:58
不错,bootice切换法比较适合手工制作;也可用bootpatr或imdisk可写挂载来复制文件。
当然,如果编程来实 ...

OK, 有时间了尽量去改进。
作者: zds1210    时间: 2015-8-31 17:50
disktool 发表于 2015-8-31 16:44
OK, 有时间了尽量去改进。

基于分区助手命令行,制作三分区,及二分区,无损,简化操作,很有前途,只是大家没有更新时间认识
作者: chiannet    时间: 2015-8-31 18:34
可以考虑内置imdisk 驱动。

利用imdisk,挂载iso到分区或目录,然后用whide参数从挂载的分区或目录“复制”到隐藏分区。完了卸载iso。

作者: zds1210    时间: 2015-8-31 19:20
chiannet 发表于 2015-8-31 18:34
可以考虑内置imdisk 驱动。

利用imdisk,挂载iso到分区或目录,然后用whide参数从挂载的分区或目录“复 ...

iSoCmd也行。不过我目前的方案是7Z散开iS0,写用分区助手写入隐藏efi区。
作者: engineerlzk    时间: 2015-9-1 09:03
disktool 发表于 2015-8-31 09:44
可以使用partassist.exe /list和partassist.exe /list:0来列出隐藏分区的磁盘号和分区号是什么。比较方便 ...

谢谢您的热心回复!
作者: disktool    时间: 2015-9-1 09:51
chiannet 发表于 2015-8-31 18:34
可以考虑内置imdisk 驱动。

利用imdisk,挂载iso到分区或目录,然后用whide参数从挂载的分区或目录“复 ...

这是一个办法,只是分区助手不太可能内置imdisk。ISO的挂载属于另一个方向的开发了。
作者: zds1210    时间: 2015-9-1 12:48
disktool 发表于 2015-9-1 09:51
这是一个办法,只是分区助手不太可能内置imdisk。ISO的挂载属于另一个方向的开发了。

嗯。用压缩软件命令行散开iso最爽。挂载iso要开盘符,会影响U盘制作。
作者: 贝壳iT    时间: 2015-9-2 20:31
本帖最后由 贝壳iT 于 2015-9-2 20:34 编辑
disktool 发表于 2015-9-1 09:51
这是一个办法,只是分区助手不太可能内置imdisk。ISO的挂载属于另一个方向的开发了。

其实把主要的功能和兼容性做好就行了 ,挂载ISO没必要去做,因为复制文件的主要作用是吧任何文件拷贝到隐藏分区而不仅仅限于ISO,如果你去实现挂在ISO了,万一是7ZIP的文件你还得做自动解压,如果是wim你又还得兼容wim的挂载,所以没必要去做挂载功能,什么文件,要不要挂载由用户或者编程人员自己去决定。
目前我就完全不用ISO,因为ISO的文件通过7Z解压后会有一个引导目录[boot]这个是不需要的,用软碟通打开也不会有这个目录的。所以我索性直接把EFI文件打包成7Z 然后使用7ZA来完成解压。不需要7Z.DLL。

另外我之前用 BOOTICEx的时候,在某些电脑上分区编号会变成0和2 或者 1和2,经常导致无法正确判断,所以之前我还要读取分区卷标再做一次对比判断相当麻烦。正常的情况我们需要他固定为0和1,目前分区助手我还没测试是否有这个问题。

作者: disktool    时间: 2015-9-2 22:54
贝壳iT 发表于 2015-9-2 20:31
其实把主要的功能和兼容性做好就行了 ,挂载ISO没必要去做,因为复制文件的主要作用是吧任何文件拷贝到隐 ...

谢谢你说的如此详细,期待你的测试,有任何问题可直接分享在这里。
作者: disktool    时间: 2015-9-2 22:54
贝壳iT 发表于 2015-9-2 20:31
其实把主要的功能和兼容性做好就行了 ,挂载ISO没必要去做,因为复制文件的主要作用是吧任何文件拷贝到隐 ...

谢谢你说的如此详细,期待你的测试,有任何问题可直接分享在这里。
作者: disktool    时间: 2015-9-2 22:54
贝壳iT 发表于 2015-9-2 20:31
其实把主要的功能和兼容性做好就行了 ,挂载ISO没必要去做,因为复制文件的主要作用是吧任何文件拷贝到隐 ...

谢谢你说的如此详细,期待你的测试,有任何问题可直接分享在这里。
作者: disktool    时间: 2015-9-2 22:54
贝壳iT 发表于 2015-9-2 20:31
其实把主要的功能和兼容性做好就行了 ,挂载ISO没必要去做,因为复制文件的主要作用是吧任何文件拷贝到隐 ...

谢谢你说的如此详细,期待你的测试,有任何问题可直接分享在这里。
作者: disktool    时间: 2015-9-2 22:55
贝壳iT 发表于 2015-9-2 20:31
其实把主要的功能和兼容性做好就行了 ,挂载ISO没必要去做,因为复制文件的主要作用是吧任何文件拷贝到隐 ...

谢谢你说的如此详细,期待你的测试,有任何问题可直接分享在这里。
作者: disktool    时间: 2015-9-2 22:55
贝壳iT 发表于 2015-9-2 20:31
其实把主要的功能和兼容性做好就行了 ,挂载ISO没必要去做,因为复制文件的主要作用是吧任何文件拷贝到隐 ...

谢谢你说的如此详细,期待你的测试,有任何问题可直接分享在这里。
作者: q2233    时间: 2015-9-2 23:57
小白不懂不会用命行,转成直观图形/按钮软件l吧
作者: 贝壳iT    时间: 2015-9-3 11:23
disktool 发表于 2015-9-2 22:54
谢谢你说的如此详细,期待你的测试,有任何问题可直接分享在这里。

那个我建议的 盘符不指定则自动分配希望快点出啦。谢谢
作者: 贝壳iT    时间: 2015-9-3 17:20
还有一个建议哦
新增输出指定磁盘的总容量功能
partassist.exe /list:2 的结果会存在分区。希望可以直接输出指定磁盘的总容量,用来判断UD区+EFI区设置的数值是不是小于磁盘总容量
作者: disktool    时间: 2015-9-5 13:07
贝壳iT 发表于 2015-9-3 11:23
那个我建议的 盘符不指定则自动分配希望快点出啦。谢谢

嗯,对分区助手还是有升级计划,
估计这个功能会连同其它功能一起发布。
暂时你可以使用如下的方法解决问题:
1. 通过命令行编程结合分区助手的/list:N来找出正在操作的优盘的盘符,并记录到变量M中。
2. 后面使用partassist.exe /hd:N /setletter:N /letter:* 来移除优盘现在的盘符。
3. 再使用partassist.exe /hd:N /setletter:N /letter:%M% 来为U盘指定之前的记录下的盘符。

通过此方式看能间接的解决你的问题不。
作者: disktool    时间: 2015-9-5 13:09
贝壳iT 发表于 2015-9-3 17:20
还有一个建议哦
新增输出指定磁盘的总容量功能
partassist.exe /list:2 的结果会存在分区。希望可以直接 ...

这个总容量包含些什么呢,因为直接使用/list就能列出每个磁盘的容量。
使用/list:N能列出第N个磁盘上每个分区的容量,你的意思是?
作者: disktool    时间: 2015-9-5 13:10
q2233 发表于 2015-9-2 23:57
小白不懂不会用命行,转成直观图形/按钮软件l吧

可以使用分区助手专业版,是图形界面的。
作者: 贝壳iT    时间: 2015-9-5 14:23
disktool 发表于 2015-9-5 13:09
这个总容量包含些什么呢,因为直接使用/list就能列出每个磁盘的容量。
使用/list:N能列出第N个磁盘上每 ...

我会加你的QQ进行详细说明
作者: 贝壳iT    时间: 2015-9-5 15:22
我已经做了一个DOC,写了更新建议,并说明了为什么要这样建议。
作者: zds1210    时间: 2015-9-11 22:26
本帖最后由 zds1210 于 2015-9-11 22:30 编辑

希望能增强一个清空隐藏区全部文件的功能,不要切换,也不要格式化。
rem 清空T盘文件
DEL t:\*.* /F /A /Q
RD  t: /S /Q
作者: disktool    时间: 2015-9-14 10:32
zds1210 发表于 2015-9-11 22:26
希望能增强一个清空隐藏区全部文件的功能,不要切换,也不要格式化。
rem 清空T盘文件
DEL t:\*.* /F /A  ...

你的建议很好,后面会加入这类弄的功能,
以帮助删除隐藏分区中的文件。
作者: zds1210    时间: 2015-9-14 12:11
disktool 发表于 2015-9-14 10:32
你的建议很好,后面会加入这类弄的功能,
以帮助删除隐藏分区中的文件。

现在最痛苦的事,莫过于发现,U+高端隐藏的efi,在一台极弱的efi主板中efi启动成功,用分区助手制作efi区同一U盘同一机子efi启动失败。
而原因却不明,以后一定要多多研究清楚。
作者: disktool    时间: 2015-9-14 15:54
zds1210 发表于 2015-9-14 12:11
现在最痛苦的事,莫过于发现,U+高端隐藏的efi,在一台极弱的efi主板中efi启动成功,用分区助手制作efi区 ...

能否分析下DBR来找到结果。我在你电脑上远程分析下怎么样?
我这里没有环境。




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