我工作时有一个 Windows Vista Business 盒子,家里有一个 Windows XP Professional 盒子。两者都更新到牙齿,但问题仍然存在。症状是:
- 当我从 XP 连接到 Vista 盒子时会发生这种情况;
- 我将文件从 Vista 盒子复制到 XP 盒子;
- 仅当我通过 Windows 资源管理器复制文件时才会发生这种情况。如果我使用 Far Manager,即使“使用系统复制例程”关闭,也不会发生这种情况;
- 该文件在末尾附加了一些随机垃圾字节。PHP 文件似乎获得 NULL 字节(零);二进制文件只是垃圾。
- 文件越大,附加的字节越多(而且它似乎与硬盘驱动器上的任何块大小或任何东西都不对应)
例如,我刚刚复制了一个 MP3 文件。Vista 机器上的大小为 66 373 042 字节,但在 XP 机器上复制时为 66 387 968 字节。
我无法在谷歌上远程找到类似的东西。有任何想法吗?
听起来很像我在 microsoft.com 上发现的这个问题: 某些文件在使用 Windows 终端服务中的 RDC 复制后损坏
由于 Visa 和 2008 共享一个共同的基础,因此极有可能是同一个 bug 困扰着它们。
我要指出的一件事是,使用文件大小来查看文件是否正常并不是一个好的解决方案。我对每个 WAN 传输都使用 md5 或 sha 哈希。我使用开源工具 md5deep 来生成和检查哈希。如果您出于某种原因不喜欢 md5deep,还有很多其他的哈希工具。
在将文件复制到(或从)Windows 7 (RTM) 64 位主机和 Windows XP 32 位客户端时,我遇到了完全相同的问题。某些复制文件的文件大小大于应有的大小,从而提供不同的 CRC 和 MD5 哈希值。
我使用十六进制编辑器对复制的文件和原始文件进行了比较,确认内容相同,除了复制版本末尾附加的额外随机字节。当我截断文件以删除多余的字节时,这两个文件给出了相同的 MD5 哈希值。
我不知道是什么导致了这个问题,因为我在许多具有不同防火墙/网络配置的不同系统和环境中都经历过这个问题。但是,我希望这可以帮助其他人确定可能的原因。
灰
我不知道问题出在哪里,但一个提示是 66387968 是 66373042 四舍五入到最接近的 32768。你确定文件越大,字节越多吗?
您是在查看磁盘上的大小还是大小属性?磁盘大小可能会有很大差异,因为部分使用的集群将在“磁盘大小”字段中注册为完全使用的集群(从而使文件大小显得更大,因为集群只能用于存储一个文件的一部分)。
您如何阅读那些额外的“垃圾”字符?因为如果您直接检查集群(使用能够直接打开磁盘而不是文件的 HEX 编辑器),它们可能会从占用物理磁盘空间的先前文件中遗留下来......
我怀疑两台机器之间存在某种问题——你的网络基础设施有多安全?您也许可以通过加密从每台机器到网络的连接来测试这一点?
两台机器都是32位还是64位?如果一个是 64 位而另一个是 32 位,我可能会看到这个问题。
我也遇到了这个问题,虽然我无法确定它发生的原因或如何解决它,但我找到了解决方法。
在远程计算机上,您可以使用计算机别名“\tsclient”在 Windows 资源管理器中访问本地计算机,因此要打开本地 C:\Temp 文件夹,请转到远程计算机上的 \tsclient\c\temp。使用此方法复制到本地计算机和从本地计算机复制似乎不会损坏文件。
这要求您在连接之前使本地驱动器可用于远程计算机。
(我认为问题与机器之间共享的剪贴板有关,而以这种方式复制使用远程机器自己的剪贴板。)
-弗罗德
Microsoft 提供了修复此错误的修补程序:
http://support.microsoft.com/kb/972828