Visual C++ 2008 で Win98/Me/NT4 対応バイナリを作りたい

と思い調査してみました。

調査してみると COFF ヘッダ内の『MajorSubsystemVersion』のフィールドが 4 から 5 になっていることに気がつきました。確認のために、Visual C++ 2005 でビルドした実行ファイルの当該フィールドを 4 から 7 に変更すると Vista でも実行できなくなりました。ふむふむ。ココが肝みたいですよ。

早速、Visual C++ 2008 でビルドしたあとに実行ファイルの『MajorSubsystemVersion』を 5 から 4 にバイナリエディタで変更し Windows Me で実行してみると・・・

kernel32.dll で GetFileSizeEx がみつかりません orz

GetFileSizeEx は Windows 2000 以降の対応なので、本格的にダメみたいです。MFC を使わない場合は、インポートしている API 的には問題なさそうに見えるのですが・・・動作せず?

当面は、Visual C++ 2005 と Visual C# 2008 の生活を送りたいと思います。

参考:

あわせて読みたい

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です