GetFileSizeEx在System32目录上返回不正确的值

Mic*_*ael 1 c winapi filesize system32

我遇到了一个关于GetFileSize和GetFileSizeEx API的非常奇怪的问题.

两个函数都可以在每个输入文件上正常工作,从System32目录中删除文件.

例如:

如果我在calc.exe上使用其中一个API(在System32中),我将获得776192字节的返回值,即使它的实际大小为918,528字节!

System32中的其他可执行文件也会发生这种情况(Regedit,calcs ..).

GetFileSizeEx的返回值为TRUE,未报告错误.

如果我将calc.exe复制到另一个目录(Say C:\),API将返回正确的字节数.

我的猜测是System32目录中的文件是如何压缩的?

或类似的东西,GetFileSize API返回其压缩大小,而不是实际大小.

有人知道为什么会这样吗?

我正在运行Windows 7 SP1.

Wou*_*ick 5

你要求提供一个文件c:\windows\system32,但你可能会从中获取文件c:\windows\syswow64\.

在我的系统上,c:\ windows\system32 \下的calc.exe是897KB.在syswow64下,它是758KB.

在此处阅读有关文件系统重定向器的更多信息:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384187(v=vs.85).aspx