1

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

除了 System32 目录中的文件外,这两个函数都可以在每个输入文件上正常工作。

例如:

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

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

GetFileSizeEx的返回值为TRUE,不报错。

如果我将 calc.exe 复制到不同的目录(比如 C:\),API 会返回正确的字节数。

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

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

有谁知道为什么会这样?

我正在运行 Windows 7 SP1。

4

1 回答 1

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

于 2014-03-14T00:35:49.910 回答