Stopエラー発生

解決


セロ  2008-02-25 16:15:41  No: 139056  IP: 192.*.*.*

VB6製のアプリケーションがあります。(exe形式にて)
これを下記2通りの組み合わせで連続運転して動作テストをしています。

●マシンA(3年ほど前の古いPC)
OS:WindowsXP Home(SP2)
開発機なので、インターネットWindowsUpdateで常に最新を保つように設定済み

●マシンB(結構新しいPC)
OS:WindowsXP Pro(SP2)
客先への納入機で、インターネットには接続されてなく、最新を保っていない

マシンAでは連続動作させても問題なく動作するのですが、マシンBではアプリケーションエラー後に、Stopエラー(ブルーバック)で停止してしまいます。
イベントビューアーのアプリケーションログで"USER32.DLL"で問題が発生しているという事です。
ちなみに、直接APIなどでUSER32.DLLは使用していないです。
両者のDLLバージョンをみると・・・

●マシンA: 5.1.2600.3099
●マシンB: 5.1.2600.2180

・・・となっており、マシンAの方が新しいです。
DLLのバージョンの違いは、WindowsUpdate等で変わってくるものだと思いますが、最新にしてみた方が良いのでしょうか?
また、USER32.DLLだけを手動で置き換える事は可能で、しかも安全でしょうか?

ここで確認するのはおかしいかもしれませんが、よろしくおねがいいたします。

編集 削除
セロ  2008-02-25 16:51:59  No: 139057  IP: 192.*.*.*

【補足】
念のためですが、VB6製のアプリは、1秒の周期でデータファイルにアクセスし、更新があれば読み込みを行い、トレンド表示するソフトです。
ファイルの読み込みにはAPIのCreateFileやSetpointer,ReadFileを使用しており、描画関係にはBitbltを利用しております。

編集 削除
やじゅ  2008-02-25 18:09:53  No: 139058  IP: 192.*.*.*

>USER32.DLLだけを手動で置き換える事は可能で、しかも安全でしょうか?
理論上は書換え可能ですが、安全かはいいきれません。

USER32.DLL 5.1.2600.3099↓で更新されている
GDI の脆弱性により、リモートでコードが実行される 
http://www.microsoft.com/japan/technet/security/bulletin/ms07-017.mspx

編集 削除
魔界の仮面弁士  2008-02-25 19:09:54  No: 139059  IP: 192.*.*.*

> Stopエラー(ブルーバック)で停止してしまいます。
Blue Screen に表示されるエラーコードを確認してください。
そこから、何か情報が得られる場合があります。
http://mtbeta.msdn.microsoft.com/ja-jp/library/ms789516.aspx?altlang=ja-jp
http://support.microsoft.com/kb/325011
http://oca.microsoft.com/
http://www.microsoft.com/technet/archive/winntas/tips/techrep/bsod.mspx?mfr=true

原因追求よりも、問題の解決を優先するのであれば、OSから
クリーンインストールされた方が早道かと。

> DLLのバージョンの違いは、WindowsUpdate等で変わってくるものだと思いますが、最新にしてみた方が良いのでしょうか?
基本的には、常に最新にしておくべきかと思います。
もちろん動作検証は必要ですけれども。

> また、USER32.DLLだけを手動で置き換える事は可能で、しかも安全でしょうか?
Windows File Protection の保護対象になっていますので、
単純にファイルを置き換えれば良いというわけでもありません。
http://ruffnex.oc.to/kenji/text/wfp/

編集 削除
セロ  2008-02-25 23:09:29  No: 139060  IP: 192.*.*.*

皆様コメントありがとうございます。
該当パソコンは一部先行して客先に納入済みで、社内に残っているPCで、改造したソフトウェアの動作検証をしているところです。

できれば、全PCの状態を同じで運用したかったのですが、仕方ないので、ネットに接続してWindowsUpdateしました。その環境で、再検証しているところです。

単純にDLLのリプレースはできないのですね。

>魔界の仮面弁士さん
そのPCはVBのランタイムモジュールなどがインストールされただけで、ほとんどクリーンなんですよ。
それでも、VBのランタイム関連がおかしいって事も考えれるので、最終的にはそうしてみようかと思ってます。
また、次にエラーが出たら、エラーのコードを控えて調査してみます。
今回は、あわててしまい、忘れておりましたが、Videoカードやメモリを更新した云々と横文字が出てましたけど。
そんな時にあわててはいけませんね。エンジニアの端くれとして。。。

編集 削除
セロ  2008-02-26 09:14:15  No: 139061  IP: 192.*.*.*

解決フラグ忘れておりました。

編集 削除