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.
你要求提供一个文件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