如果记事本(Windows 预装的 Microsoft Notepad,我的情况是 Windows 7)在我将内容保存到文件之前冻结,是否有办法恢复内容?记事本在硬盘上没有某种“备份”。我认为在任何 Windows 版本中,记事本都不会在磁盘上保留任何数据。
一切都在内存中,或者如果你打开了一个已经存储在磁盘上的现有文件,那么所有更改都在内存中。因此,如果任务仍然在那里只是被冻结了,那么内存应该还在那里。我第一次尝试通过“解冻”记事本来解决这个问题时得到了这个想法(见如何分析记事本崩溃?(Windows7))。如果解冻不成功,那么就还存在恢复数据的问题。
请注意,这与以下问题中所述的情况非常不同:记事本崩溃后如何“恢复”?由于重启,内存被清除了,就我而言,所有数据仍然在内存中。
答案1
如果记事本任务/进程仍然存在,则记事本中的文本仍然存储在计算机主内存中。
访问它的一种方法是对该过程进行完整的内存转储,然后从那里恢复您的文本。我大约需要 5 分钟(但如果您前几次这样做,您很可能需要增加一些时间,这取决于您的背景知识 - 考虑增加 10-20 分钟)。但您将能够恢复完整的文本。
要存储内存转储,您需要一个可以存储转储文件的任务管理器,您可以使用 Windows 内置任务管理器,我个人使用免费软件工具 Processhacker。
- 打开任务管理器
- 选择冻结的记事本任务
- 通过菜单或上下文菜单选择保存转储文件(如果软件为您提供选择,请使用“完整转储”)
- 将转储文件保存到磁盘
您可以使用常规 Windows Hex 编辑器(例如 HxD Hex 编辑器)对其进行分析并恢复数据:
- 在十六进制编辑器中打开内存转储文件。它通常很大(50.000k 或更多,即使在任务管理器中只显示不到 1.000k),因为它包含的内容远不止您写入记事本的文本,其中大部分都是不可读的乱码。
- 要在转储文件中查找“您的文本”,请使用 HEX 编辑器的“搜索”。搜索记事本中的文本的任何部分,例如句子或单词的一部分(确保在搜索时选择正确的编码方法,通常是 Unicode)
- 在转储文件中找到它后,标记包含记事本中所有文本的整个部分
- 将其复制并粘贴到“合适的”文本编辑器中(例如 Notepad++,不要使用 MS 记事本,因为您将无法按照下一步所述删除特殊字符)
- 将文本粘贴到文本编辑器后,通常会在原始文本的每个字符之间看到一个“特殊字符”,您可以删除所有特殊字符,只需使用文本编辑器的“全部替换”功能将其删除即可(可以通过复制和粘贴添加特殊字符)。
瞧,这就是您恢复的数据......
PS. 有时还需要进行进一步的清理,您的部分文本可能出现两次,一次可读,一次“半可读”。在这种情况下,只需删除半可读的副本即可。但它“总是不同的”,所以您只需检查您的文本是否也是这种情况。
PPS。使用 HxD Hex Editor,您还可以直接访问内存,而无需先将其保存到磁盘。在“Extras”下的菜单中,单击“Open Memory”(选择任务时,请确保取消选中隐藏“不可读”内存的框)
答案2
我按照已接受答案的步骤操作,效果很好。我建议Hex Editor Neo
;我已经安装了HxD
和Win dbg
,但它们无法在十六进制文件中找到 ASCII 文本。
脚步:
打开任务管理器找到该应用程序,然后右键单击它,选择 保存转储文件在上下文菜单中。
最后,在中打开转储文件Hex Editor Neo
。
搜索您猜测的字符串在文本中出现的部分。TADA 您可以在内存中找到其余的文本。
下载链接Hex Editor Neo
:
https://www.hhdsoftware.com/free-hex-editor