1

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 を実行しています。

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 に答える