【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

おすすめ

コメントを残す

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