GetFileSize および GetFileSizeEx API に関して非常に奇妙な問題が発生しています。
どちらの関数も、System32 Dir からのファイルを除くすべての入力ファイルで正常に動作します。
例えば:
calc.exe (System32) で API の 1 つを使用すると、実際のサイズが 918,528 バイトであっても、776192 バイトの戻り値が返されます。
これは、System32 の他の実行可能ファイル (Regedit、calcs ..) でも発生します。
GetFileSizeEx の戻り値は TRUE で、エラーは報告されません。
calc.exe を別のディレクトリ (たとえば C:\) にコピーすると、API は正しいバイト数を返します。
私の推測では、System32 ディレクトリ内のファイルはある程度圧縮されていますか?
または似たようなもので、GetFileSize API は実際のサイズではなく、圧縮されたサイズを返します。
なぜこれが起こっているのか誰にも分かりますか?
Windows 7 SP1 を実行しています。