【BM】MS11-025 で98/Me/NT/2000でソフトが動かなくなる件 その2
先日のMS11-025絡みの不具合の続きです。
前回は、アプリケーションを使う側の問題でしたが、今回は作る側の問題についてです。
ランタイムを配布しないで内部に機能を組み込んだ場合、今度はパッチを適用した、PC側で作ったプログラムがWindows 2000以下の全部のマシンで FindActCtxSectionStringA のエラーが出て動作しなくなってしまいます。
Filename: vcfix0301.zip Version: v0.301 Date: 2023, 30, May Oldversion: v0.21 |
*v0.301 最適化
*v0.21 実行ファイルのコンバータ内蔵。ドキュメント追加。ライブラリファイルを一つに統合。
*v0.20 VC++2010 で Win95/98/Me が動作するように改善
*7/28 v 0.14に修正 (DEP問題完全解決、設定不要に)
*5/23に差し替え(DEP対応、ただしXPSP2/Vista RTMの場合はDEP許可登録が必要)
*4/21 v 0.11
使い方は簡単。
* v0.20 では 必要な#define を入れて#include 加えるだけになりました
#include "commonfix.h"
を記載して、初期化関数の中に、initialize_findacx(); を 書き加えるだけ。
stdafx.h に
#define WINVER 0x0400 を定義すれば Windows 95以降用、
#define WINVER 0x0410 を定義すれば Windows 98以降用にもなります。
MFCの場合はエントリーポイントをANSIの場合は WinMainCRTStartup2に書き換えてください(標準ではWinMainCRTStartup)。
UNICODEの場合は wWinMainCRTStartup2に書き換えます(標準ではwWinMainCRTStartup)。
サポート切れたとはいえ、VC++2005/VC++2008で動作保障してるプログラムが動かなくなるのはなんだかな~と思います。
src\mfc\appcore.cpp を書き換えてもいい気がしますが、オリジナルいじるのは嫌な人も居ると思うので。
関連記事:
Visual Studio 2005でWin95対応ソフトをコンパイル
こっそりWindows 2000向けに MS11-025が更新されたよ
関連サイト:
「プロシージャエントリポイント FindActCtxSectionStringA がダイナミックリンクライブラリ KERNEL32.dllから見つかりませんでした」という警告ダイアログが表示され、起動できない。 | pon software's blog
Comments