最近 VC6 から VS2008 に変換した既存の (古い) コードラインがあります (途中で VS2005 に変換しています)。変換後、すべて (またはほとんど) の vcproj ファイルで、プリプロセッサ設定を使用して WINVER を 0x0500 に設定しました。かなりの数のプリコンパイル済みヘッダー (通常は stdafx.h) で、WINVER は 0x0500 に設定されています (まだ 0x0400 に設定されているものもあります)。メインの exe で dumpbin /headers を使用すると、オペレーティング システムのバージョンが 5.0 (Windows 2000) であることが示されます。
WINVER と WIN32_WINNT が 0x0501 になるように vcproj プリプロセッサ設定を変更し、stdafx.h ファイルで同様の変更を行って再構築した後、dumpbin stil はオペレーティング システムのバージョンが 5.0 であることを示します。
また、VS2008 を使用して新しいコンソール アプリ (および新しい MFC アプリ) を作成し、ビルドしました。targetver.h ファイルで設定された WINVER (および WIN32_WINNT) が 0x0600 であっても、これらの exe ファイルはオペレーティング システムのバージョンが 5.0 であることも示しています。
WINVER および/または WIN32_WINNT を 0x0501 または 0x0600 に設定すると、dumpbin によって表示されるオペレーティング システムのバージョンに何らかの影響があると思いました。WINVER および/または WIN32_WINNT に対応するオペレーティング システムのバージョンが dumpbin に表示されることを期待する必要がありますか?
これに関するいくつかの良い記事を読みました (msdn の「Windows ヘッダーの使用」、The Old New Thing の「WINVER との違いは何ですか...」、特に興味深い記事: http://blogs.msdn.com /dsvc/archive/2009/06/19/troubleshooting-not-a-valid-win32-application-error-at-the-startup.aspx
オペレーティング システムのバージョン フィールドに正確にどのバージョンが表示されるかはおそらく大きな問題ではありませんが、動作を理解し、これらのマクロと設定を正しく使用していることを確認するために「正しい」ことを実行できるようにしたいと考えています。
助けてくれてありがとう