整理了一下图片,用Picasa3导出的时候提示 由于磁盘错误,无法对文件执行写操作 。磁盘可能已满或为只读。
但是我检查了各种地方发现并没有磁盘已满,或者文件只读。网上搜了一下没发现什么有价值的线索。于是尝试将导出失败的文件从相册删除,然后可以继续导出了。问题是900多个文件,删了半天删除了十几个,问题是还不知道有多少个是存在问题的,一个个删除也不是办法,最终还是决定上调试器解决这个问题,猜测应该是出问题直接退出了。
要解决也简单,把出问题的地方直接跳过就ok了。
od载入,下断MessageBoxA和MessageBoxW,最终会会断在w上。往回跟就找到出问题的地方了。
0074079C . FFD0 call eax
0074079E . 85C0 test eax,eax
007407A0 74 46 je XPicasa3.007407E8
007407A2 . 68 9402CB00 push Picasa3.00CB0294 ; ASCII "CImageOutput::filewriteerr"
007407A7 . B8 4002CB00 mov eax,Picasa3.00CB0240 ; ASCII "Unable to write all files due to a disk error. The disk may be full or read-only."
007407AC . C74424 38 FFF>mov dword ptr ss:[esp+0x38],0xFFFF
007407B4 . E8 A7DD2600 call Picasa3.009AE560
007407B9 . 8B00 mov eax,dword ptr ds:[eax]
007407BB . 83C4 04 add esp,0x4
007407BE . 85C0 test eax,eax
007407C0 . 74 15 je XPicasa3.007407D7
007407C2 . 83C0 04 add eax,0x4
007407C5 . 6A 00 push 0x0
007407C7 . 50 push eax
007407C8 . 33C0 xor eax,eax
007407CA . E8 31FF2300 call Picasa3.00980700
007407CF . 83C4 08 add esp,0x8
007407D2 . E9 21020000 jmp Picasa3.007409F8
007407D7 > 33C0 xor eax,eax
007407D9 . 50 push eax
要解决也简单,直接把je改成jmp就可以了。从此导出的时候遇到错误不会中断了,会继续进行后续的导出。
事实证明,相册一共917个项目
导出之后只有866个,一个个排查删除,那得删到猴年马月
最后提供个patch来解决这个问题:
下载链接:链接:https://pan.baidu.com/s/1LE28x4zqyRwTXi_O3KKibw
提取码:4zij
复制这段内容后打开百度网盘手机App,操作更方便哦
补丁校验信息:
文件名: I:\Program Files (x86)\Google\Picasa3\picasa3-patch.exe
文件大小: 1018368 字节 (994.50 KB)
修改日期: 2020-01-30 22:14
MD5: 0c0f6b0699424b85236d8123a36cd9f8
SHA1: 022399edc91b49e2066f10caf5bb08239ae6c0b7
SHA256: a7a440dc19329f7b335f1ddd3f2c3a791c8d156f0337114f0df08863acead0f9
CRC32: a8b6d698
请自行校验md5值