即使windows资源管理器爆炸,是否可以读取损坏的介质(cd、hdd、dvd…)?
我想问的是,是否有一组API或其他东西可以在非常低的级别(低于资源管理器?
Windows资源管理器的主要问题是它不支持在读取错误后恢复复制。例如,每次弹出和重新插入时,大多数表面划伤的CD都会在磁盘的不同区域出现故障。
因此,使用支持恢复复制操作的实用程序,可以通过多次执行"弹出/重新加载/恢复"来读取损坏CD的全部内容。
事实上,这就是我写的一个实用程序所做的,我从来没有需要过比这更花哨的东西来读取被刮伤的磁盘。(它只是使用ReadFile和WriteFile。)
下一步是通过将诸如"\.\F:"(注意:斜线在这里是字面意思)之类的字符串传递给CreateFile来打开原始分区(即磁盘映像)。它可以让你从驱动器中读取原始扇区,但从这些数据重建文件会很困难。
事实上,"\.\"语法允许您打开Windows对象管理器命名空间的"\GLOBAL??"分支中的设备,就好像它们是文件一样。这与使用/dev/x作为参数调用dd没有什么不同。还有一个"\Device"分支,但只能通过DeviceIoControl()(即ioctl())访问,这意味着没有简单的ReadFile()/WriteFile()接口。
我想,任何低于这个级别的东西都是特定于设备的;比如像一些CD刻录程序那样读取原始CD-ROM数据(包括ECC位)。你必须对特定的介质(CD、闪存、DVD)以及你的硬件允许你对它们做什么进行研究。
注意:反斜杠似乎在通往网页的路上丢失了;您需要将"反斜杠-反斜杠-点-反斜杠DeviceName"传递给CreateFile。当然,你也需要逃离他们。
如果您想这样做,请从Linux端进行操作-请参阅:http://sourceforge.net/projects/monkeycity/开源
或者现成的应用程序和免费软件:http://www.theabsolute.net/sware/dskinv.html
第一步是dd_rescue。之后,您可以自由地尝试任何重建数据的方法。
还有GNUddrescue
GNU ddrescue是一种数据恢复工具。它将数据从一个文件或块设备(硬盘、cdrom等)复制到另一个,试图在出现读取错误时首先挽救好的部分。
确保使用3-arg版本(手动):
ddrescue [options] infile outfile [mapfile]
也就是说,即使是可选的,也要使用mapfile
,因为:
如果使用ddrescue的mapfile功能,数据将非常有效地进行抢救(只读取所需的块)。你也可以在任何时候中断救援,稍后在同一点继续救援。地图文件是ddrescue有效性的重要组成部分。除非你知道自己在做什么,否则就使用它。
它也包含在Cygwin和Homebrew中。
我不知道Windows资源管理器和Win32 API之间存在什么层。您可以尝试使用Win32文件I/O编写程序。如果这不起作用,那么你必须编写自己的设备驱动程序才能获得更低的驱动程序。
我在linux方面或使用BartPE方面运气不错(http://www.nu2.nu/pebuilder/),但无论您是从Windows还是Linux尝试,仅仅看到该文件并不总是意味着该文件将是可恢复的。你最好的选择可能是使用恢复程序的试用版。
我有两个磁盘开始解体。从无法读取的扇区模式来看,我认为它们的乳液内部剥落。WinXP资源管理器只是举手表示驱动器根本不存在。
在这两种情况下,我都使用了运行时软件中的"GetDataBack for NTFS"(http://www.runtime.org/)。你可以下载一个免费试用版,它会向你展示如果你付费,你可以得到什么。我买它的时候是49美元,但现在是79美元。
这个节目太棒了。它不一定很快,因为它会一遍又一遍地重读一些行业,试图从多次尝试中获得一致的价值,但当它完成后,你可以找回你认为已经永远消失的东西。我有一个驱动器需要10个多小时才能分析,但当分析完成后,我得到了500GB驱动器的97%以上。绝对物有所值。
另一个很棒的工具是Beyond Compare。我有2.5.3版,但目前是3版。??费用为30美元。他们有一个完整的功能,30天的跟踪。它能很好地复制大量文件(并且只复制那些需要复制的文件),而且与Explorer不同,如果出现故障,它不会爆炸。如果你熟悉Samba的程序,它有点像Windows的可视化rsync。
除了是一个非常满意的客户之外,我与上述任何一家公司都没有任何关系。
从磁性存储设备恢复数据的黄金标准必须是SpinRite。不过,这是一个商业应用程序,所以你可能不会从中学到太多。
如果你有Linux机器,我可以推荐dv灾难。它最初是用来创建纠错文件的,但它也会将DVD读取到图像中,并忽略读取错误;您可以一个接一个地使用不同的驱动器来填充图像中缺失的扇区。