Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C GetFileSizeEx在System32目录上返回不正确的值_C_Winapi_Filesize_System32 - Fatal编程技术网

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

C GetFileSizeEx在System32目录上返回不正确的值,c,winapi,filesize,system32,C,Winapi,Filesize,System32,关于GetFileSize和GetFileSizeExAPI,我遇到了一个非常奇怪的问题 除了System32目录中的文件外,这两个函数在每个输入文件上都可以正常工作 例如: 如果我在calc.exe(在System32中)上使用其中一个API,我将得到776192字节的返回值,即使它的实际大小是918528字节 System32中的其他可执行文件(Regedit、calcs..)也会发生这种情况 GetFileSizeEx的返回值为TRUE,未报告任何错误 如果我将calc.exe复制到另一个

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

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

例如:

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

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

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


您在
c:\windows\system32
下请求文件,但您可能从
c:\windows\syswow64\
获取文件

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

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


GetFileSize函数检索文件的未压缩大小,即使文件已压缩,
GetFileSize/Ex()
也会报告未压缩的大小。有一个单独的
GetCompressedFileSize()
来获取压缩大小。所以这不是问题所在。你是一个运行在64位系统上的32位应用程序,这意味着你得到了。哇!我永远不会想到这一点,非常感谢:)GetFileSize函数检索文件的未压缩大小,即使文件已压缩,
GetFileSize/Ex()
也会报告未压缩的大小。有一个单独的
GetCompressedFileSize()
来获取压缩大小。所以这不是问题所在。你是一个运行在64位系统上的32位应用程序,这意味着你得到了。哇!我永远不会想到这一点,非常感谢:)