我遇到了一个关于 GetFileSize 和 GetFileSizeEx API 的非常奇怪的问题。
除了来自 System32 目录的文件外,这两个函数都适用于每个输入文件。
例如:
如果我在 calc.exe(在 System32 中)上使用其中一个 API,我将获得 776192 字节的返回值,即使它的实际大小是 918,528 字节!
System32 中的其他可执行文件(Regedit、calcs ..)也会发生这种情况。
GetFileSizeEx的返回值为TRUE,没有报错。
如果我将 calc.exe 复制到不同的目录(比如 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
关于c - GetFileSizeEx 在 System32 目录上返回不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22393252/