无忧启动论坛

 找回密码
 注册
搜索
WEPE笔记本电脑手机维修小包 IT发烧友的必备工具最纯净的「微PE装机优盘」UEPON大师作品卡瑞飞系统和装机二合一超级U盘
广告位招租系统gho:最纯净好用系统下载站广告联系 QQ:184822951 微信:wuyouceo
查看: 2363|回复: 17

[求助] 请教P大,ISO内的文件直接访问的问题

[复制链接]
发表于 2018-12-20 21:55:17 | 显示全部楼层 |阅读模式
记得之前你的某个帖子里说过,ISO文件内的信息在头部有文件列表和文件起始值和文件长度等信息。
请问在windows下怎么把这个ISO内部文件直接"映射"出来供第三方程序直接使用?(不知道这里用映射这个词词对不对。。。)

比如ISO内的INSTALL.WIM文件,不挂载ISO而直接在Windows下第三方程序直接使用。
发表于 2018-12-20 23:10:31 | 显示全部楼层
勋章哪来的?
回复

使用道具 举报

发表于 2018-12-20 23:41:26 | 显示全部楼层
iso 里面的文件,全都是连续、没有碎片的。用 grub4dos 的 blocklist 命令可以列出文件的起始地址和长度。当然,这里需要先用 map 命令把 iso 映射成光驱,比如 (0xFF):

map (...)/.../.../my.iso  (0xFF)
map --hook
root (0xFF)

然后,就可以用

blocklist /.../INSTALL.WIM

来列出它的扇区序列了。注意,光驱的扇区大小是 2048 字节,不是 512 字节。

也就是说,用这种办法,你就知道 INSTALL.WIM 相对于 iso 的偏移量以及所占用的扇区总数了。

点评

我意思是在Windows下用,有方法吗?  详情 回复 发表于 2018-12-20 23:53
回复

使用道具 举报

 楼主| 发表于 2018-12-20 23:53:03 来自手机 | 显示全部楼层
不点 发表于 2018-12-20 23:41
iso 里面的文件,全都是连续、没有碎片的。用 grub4dos 的 blocklist 命令可以列出文件的起始地址和长度。 ...

我意思是在Windows下用,有方法吗?
回复

使用道具 举报

发表于 2018-12-21 00:06:57 | 显示全部楼层
刚才给出的,就是一个方法。当你知道了 INSTALL.WIM 的起始地址和长度以后,你就可以在任何操作系统下找到 INSTALL.WIM 的数据了。

点评

另外的方法,不是这种。  详情 回复 发表于 2018-12-21 00:47
回复

使用道具 举报

 楼主| 发表于 2018-12-21 00:47:56 来自手机 | 显示全部楼层
不点 发表于 2018-12-21 00:06
刚才给出的,就是一个方法。当你知道了 INSTALL.WIM 的起始地址和长度以后,你就可以在任何操作系统下找到  ...

另外的方法,不是这种。
回复

使用道具 举报

发表于 2018-12-21 08:12:59 | 显示全部楼层
就算要直接使用也需要编程进行计算,这个成品程序无疑与解压软件、虚拟软件差不多。
回复

使用道具 举报

发表于 2018-12-21 09:36:05 | 显示全部楼层
同意各位观点,所谓直接用也还是需要进行后台处置的。
勋章倒是正常,我发现名字是五颜六色的。

点评

是哦,名字有不同颜色  详情 回复 发表于 2018-12-22 09:02
回复

使用道具 举报

发表于 2018-12-22 09:02:20 | 显示全部楼层
窄口牛 发表于 2018-12-21 09:36
同意各位观点,所谓直接用也还是需要进行后台处置的。
勋章倒是正常,我发现名字是五颜六色的。

是哦,名字有不同颜色
回复

使用道具 举报

发表于 2018-12-22 17:38:43 | 显示全部楼层
一个iso文件,打包了多个文件,其中有文件A,现在要获得文件A的内容,怎么办?

一种方法是先利用某工具挂载iso成为虚拟光盘,然后iso里的文件就如同磁盘上的文件,从中找文件A来读取其内容就行了。

另一种是不挂载ISO,而直接读出A的内容,这是可以办到的。
A的内容实际上占据iso内某片连续区域,这片区域从何处开始,长度多少,看iso文件的头部就可以确定。
知道了文件A在iso内的偏移和长度,那么打开(fopen)整个iso文件,指针定位(fseek)到适当的偏移,连续读取(fread)适当长度的内容就得到A的内容了。

这里直接读出A的内容,过程中并没有产生一个磁盘文件A让第三方去使用,但已经得到其内容了,可以作某些运用啦。非要一个文件A不可的话,把得到的文件内容再写出到磁盘形成文件A就是了。但这样就变成另一个问题了——怎样从iso里提取生成文件A?许多现成压缩解压工具(含命令行版本)都能直接从iso里析出其内任一文件或文件夹。

0PE提供的批处理可生成针对iso文件优化的grldr,此grldr对iso内文件是直接读取的,而不是先映射iso为虚拟光盘再从后者读取的,这样对于某些老机加快了PE启动速度。

点评

哦,看你的方法,还不是我想要实现的最终效果。 我想达到的效果,是通过ISO头文件已经确认了A文件的起始位置和长度,然后不挂载该ISO,直接通过Windows下的某个API直接映射出这个A文件出来。 感谢。 我再找找资料  详情 回复 发表于 2018-12-22 22:34
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2019-8-22 02:56

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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