初めましてコバと申します。
初めての投稿です。皆さん宜しくお願いします。
この掲示板に投稿して良いかどうか迷いましたが、
投稿させて頂きました。
環境:W2K(SP3),VS6(SP6)
今までVB6でプログラムを組んでいましたが、VC6
もできるように、VC6を練習していました。
都合あって、VB6の昔のソースを変更する必要が出
たため、VB6のプロジェクトファイルを開いたところ、
「0x0fafcfadの命令が0x00000000のメモリを参
照しました。メモリがreadになることができません
でした。」
というメッセージが出てVB6が開かなくなりました。
また、この時、デバッッガを起動すると、「バンドル
されていない例外はVB6.EXE(VBA.DLL)にあります
:0xC0000005:Access Violation。」と言うメッセージ
がでます。
但し、アドミニだと問題なく開きます。
何が原因で、開かなくなったか不明です。
どなたか、原因と対策のアドバイスをお願いします。
原因は分かりませんが、VB6やVC6を再インストールしてみてはいかがでしょう。
dairygoodsさんへ。 レス有り難うございます。
VB6・VC6の再インストですが、VS6で再インスト
を何度もやりましたがだめでした。
(Win2KのSPはSP3でなくSP4,VS6のSPはSP6で
なくSP5でした。ミスタイプでした。(^_^;)
*再インストして確認した結果は次の通り
VS6(SPなし)再インスト -> NG
VS6にSP5を当てる -> NG
Win2kのSPをSP3からSP4 -> NG
アドミニしか使えなくしてるとかじゃないですよね?
インストール順序と使用しているソフトの確認をしたいのですが
よろしいでしょうか
1.OS Win 2000 これは サーバー:PRO のどちら
アドミニ以外のユーザーにadmi権限のみ与えても動作が不安定になることが
あります
ポリシーの設定が変わらないために起きることがあります
(XPの場合に多く見られるみたいですけど 2000は?)
2.VS6の初期インストール ユーザーは なに(admi)
(admi以外の場合VCのランタイムへ影響することがあります
VBへの影響については試したことがありません
SPインストール時に置き換え不能になり「無視」で続行できますが
場合によって動作不安定になります)
3.Office はインストールされている
a.入っていれば バージョンは?
b.入れた順序はVS6の前 それとも後
(インストール順序間違うとVBランタイムを破壊または損傷させること
があります
この場合、OSがセーフ状態でもランタイムを掴んだままになるので
OSのクリーンインストールから必要になることがあります)
OFFICE 2000までであればですけど
それ以上のものであれば良く分かりません
4.アンチウィルス系のソフトはインストールされている
(一部にOFFICEとの相性が悪い報告もあります)
A.ノートンのものそれ以外のもの
ノートン系のものなら、インストール作業時 OFF にした
OFF にしなかった
B.ノートン系以外の時も同様
C.使用している場合(VS6の前にインストールした、後にした どちら)
5.同一ランタイム(VB、MFC42、MSVCRT)
を使用したソフトはMS製品以外でインストールされてますか
あれば、それぞれの同一 フォルダ内にある
ランタイムEXE ランタイム.DLL のバージョンは
6.パス設定の順序は?(ユーザーによって違いますので注意)
大概の場合 6・5に原因があって障害を引き起こすみたいですけど
3の場合のは、確実にVBエディタに影響します
1の場合は見比べることが出来るのですぐ分かるはずです
4の場合、それぞれのROMに注意事項がありますので
それを参考に、回復作業が可能なはずです
少なくとも、XP上でVS6(EP、SP5)+OFFICE 2000+ノートン系
アンチウィルス(セキュリティ系)
のインストールのみで、ランタイムがアクセス侵害(アクセスバイオレーション)に
陥ったことがあります
最近2000での作業をしていないのでこれ以上まとめることが出来ませんが
参考にしてもらうことが出来ますでしょうか
どのOSでもそうですが
VS6インストール後に「F]社製COBOLをインストールした場合
VB・VCランタイムに影響を与えることがありますが、パスの
順序を変更することで回避出来たりします
ランタイム系のDLLは、再インストールでは最新の物に置き換わらないことが
多々あります
これは、損傷したままのDLLをOSが起動時に損傷したまま捕まえてしまうのが原因
です
原因がこの場合は、AUTOEXEC.NTなどで手っ取り早く回避できます
皆さんレスありがとうございます。
woodさんが言われる3・5・6が怪しいと思いますが、よく原因が
つかめません。
【wood】さんへ
5項のバージョンはDependencyWalkerで言うファイルバージョンで
良いですか?
6項のパスはどういう順序が正しい教えていたきたいのですがm(_ _)m
>1.OS Win 2000 これは サーバー:PRO のどちら
Win2000Pro(SP4)です
>2.VS6の初期インストール ユーザーは なに(admi)
administratorです
>3.Office はインストールされている
office97(SR1)とoffice2002(SP1)です。
officeを入れてからVS6をいれました。
office2002をアンインストしましたが、解決しませんでした。
※この環境で、以前までは動いていたのですが。。。
ただ、office2002は最近updateしました。その後、VB6が問題なく
動いたかどうかは注意していなかったのでわかりません(- -;
>4.アンチウィルス系のソフトはインストールされている
ウイルスバスタ- Corp.をインストしています。VS6の前です。
>5.同一ランタイム(VB、MFC42、MSVCRT)
> を使用したソフトはMS製品以外でインストールされてますか
ランタイムEXE ランタイム.DLL のバージョンの調べ方ですが、
DependencyWalkerで確認しようと思います。何種類かバージョンが表示
されますが、ファイルバージョンでよいですか?
ちなみに以下のフォルダに同一DLLがありました。知らないうちにてんこ盛り
になっていました(^^)
1.MFC42.DLL:4箇所
2.MSVCRT.DLL:10箇所
3.VB6JP.DLL:1箇所
>6.パス設定の順序は?(ユーザーによって違いますので注意)
問題のユーザーのpathは
C:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT;
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;
C:\Program Files\Microsoft Visual Studio\Common\Tools;
C:\Program Files\Microsoft Visual Studio\VC98\bin」
アドミニのpathは
C:\PROGRA~1\JUSTSY~1\JSLIB32;%SYSTEMROOT%\SYSTEM32;%SYSTEMROOT%;
%SYSTEMROOT%\SYSTEM32\WBEM;
C:\DMI\WIN32\BIN;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;
C:\Program Files\GrapeCity\TrueHelp\Tools;
C:\Program Files\GrapeCity\TrueHelp\HTML;
C:\Program Files\TrueHelp\Tools;C:\Program Files\TrueHelp\HTML
です。
AUTOEXEC.NTは、次のようになっていました。
@echo off
lh %SystemRoot%\system32\mscdexnt.exe
lh %SystemRoot%\system32\redir
lh %SystemRoot%\system32\dosx
【Kazuki】さんへ
>アドミニしか使えなくしてるとかじゃないですよね?
普通にインストしました。アドミニしか使えないようにはしていないつもり
です。C:\Program Filesフォルダ以下を使用ユーザーに対してフルアクセスにしていますし・・・
> ※この環境で、以前までは動いていたのですが。。。
> ただ、office2002は最近updateしました。その後、VB6が問題なく
> 動いたかどうかは注意していなかったのでわかりません(- -;
ほぼ間違いなくこれが原因
MSの製品はアンインストールしてもランタイムだけは最新のものが残っている
ことが多い、
このためVS6を再インストールしてもこちらのランタイムに置き換わることが
無いため動作不安定になる
この場合
インストールドライブ:\Microsoft Visual Studio\VB98
インストールドライブ:\Microsoft Visual Studio\Common\IDE\IDE98
のDLLにCDから手動でコピーするといいと思います
VBラウンジで質問するほうがもっと的確な回答もらえると思うよ
VCの障害ではなくVBの障害のようですから?
【wood】さんへ
>VCの障害ではなくVBの障害のようですから?
了解しました。
もう少しおつきあいお願いします。
DLLのVerが原因の様ですが、VB6.EXEとVBA6.DLLをCDからハンドコピーしましたが、
解決しませんでした。(VB側のエラーでしたのでmfc42とMSVCRTはコピーしませんでした)
そこで質問です。
1.アクセス障害エラー「バンドルされていない例外はVB6.EXE(VBA6.DLL)にあります。」
が出たときにデバッカーを立ち上げたら、デバックウィンドウに下記DLLについて
「~をロードしました。合致するシンボル情報は見つかりませんでした。」
のメッセージが出ていました。これらのDLLをCDからハンドコピーすれば良いですか?
'C:\Program Files\Microsoft Visual Studio\Common\VSS\win32\SSJP.DLL'
'C:\WINNT\SYSTEM32\COMADDIN.DLL'
'C:\WINNT\SYSTEM32\cscui.dll'
'C:\WINNT\SYSTEM32\cscdll.dll'
'C:\WINNT\SYSTEM32\browseui.dll'
'C:\WINNT\SYSTEM32\NTSHRUI.DLL'
'C:\WINNT\SYSTEM32\atl.dll'
'C:\WINNT\SYSTEM32\NETAPI32.DLL'
'C:\WINNT\SYSTEM32\secur32.dll'
'C:\WINNT\SYSTEM32\NETRAP.DLL'
'C:\WINNT\SYSTEM32\samlib.dll'
'C:\WINNT\SYSTEM32\ws2_32.dll'
'C:\WINNT\SYSTEM32\WS2HELP.DLL'
'C:\WINNT\SYSTEM32\WLDAP32.DLL'
'C:\WINNT\SYSTEM32\dnsapi.dll'
'C:\WINNT\SYSTEM32\wsock32.dll'
'C:\WINNT\SYSTEM32\SHDOCVW.DLL'
'C:\Program Files\Microsoft Hardware\Mouse\Msh_zwf.dll'
'C:\Program Files\Microsoft Reference\Microsoft Bookshelf 3.0\hook.dll'
スレッド 0x9D4 終了、終了コード 0 (0x0)。
例外処理 (初回) は VB6.EXE (VBA6.DLL) にあります: 0xC0000005: Access Violation。
2.エラー発生時に自動ウィンドウのコンテキスト欄にに「VBA6! 0fada3c7()」と表示されています。
この部分はどのDLLに実装されているのかを突き止めたいのですが、デバックに使える
ツールをご存じありませんか?
DependencyWalkerで見てみたのですが、それらしいアドレスが見あたりませんでした
最初の質問で「VB6のプロジェクトファイルを開いたところ」
と成っていましたので環境に関するところまではお付き合いできましたが
VBの実行時エラーについては分かりません
>'C:\Program Files\Microsoft Visual Studio\Common\VSS\win32\SSJP.DLL'
>'C:\WINNT\SYSTEM32\COMADDIN.DLL'
>'C:\WINNT\SYSTEM32\cscui.dll'
なおこれらのメッセージはVCのデバッグウィンドウに表示されたもの
ではないのでしょうか?
>VB側のエラーでしたので
ならVBのデバッグをしっかりやってから
にしてください
何度も言いますが「VBラウンジへ行ってください」
>DependencyWalker
このソフトは私には分かりません
>コンテキスト欄にに「VBA6! 0fada3c7()」
エラーが出たところでVCのデバッガをアタッチして
VCのデバッグメニューのモジュールをみると、読み込まれているDLLの
アドレス一覧があるので、どのDLL内かわかると思います。
そのあと、混合モードでCtrl+Gして、その停止したアドレスにジャンプすれば、
どの命令でAccess Violationしているかわかると思います。
が、原因を突き止めるのは難しいかも。
【wood】さんへ
>何度も言いますが「VBラウンジへ行ってください」
了解しました。
言い訳になりますが、VCラウンジなので、Visual Studio周りのことが
得られるかなぁと思い投稿しました。
【mura】さんへ
>エラーが出たところでVCのデバッガをアタッチして
説明不足でした。前回書き込んだ「1.アクセス障害エラー ~ が出たときに
デバッカーを立ち上げたら、~」のデッバカは「VCのデバッガ」です。
>そのあと、混合モードでCtrl+Gして、その停止したアドレスにジャンプすれば、
>どの命令でAccess Violationしているかわかると思います。
アドレスから推測するとVBA.DLLでした。
前回書き込んだようにVCのデバッガのコンテキスト欄に「VBA6! 0fada3c7()」と表
示されてることからも、障害が出ているのはVBA6.DLLかなぁ?
でも、このDLLは前回CDからハンドコピーしましたので正常なはずです。
VCのデバッガが「合致するシンボル情報がない」と言っている19個のDLLをCDからハ
ンドコピーしてみます
>アドレスから推測するとVBA.DLLでした。
>前回書き込んだようにVCのデバッガのコンテキスト欄に「VBA6! 0fada3c7()」と表
>示されてることからも、障害が出ているのはVBA6.DLLかなぁ?
> でも、このDLLは前回CDからハンドコピーしましたので正常なはずです。
>VCのデバッガが「合致するシンボル情報がない」と言っている19個のDLLをCDからハ
>ンドコピーしてみます
これまでの話からあなたのPGの動作を察すると
VCで作成プログラムから呼び出し関数->
VBで作成プログラムから呼び出し関数->
VBA6.DLL->結果(ハング
に成っているのではないのでしょうか
つまり「VBで作成プログラム」のから呼び出している関数の
引数に不正な値を引き渡しているため「VBA6.DLL」
がアクセス範囲外の領域参照し落ちているのではないのでしょうか
「VBで作成プログラム」をデバックしない限り解決にはならないのではないですか
VBA6.DLLでは想定していない値のため
VCで言うアーサッションに成っているのではないのですか
>VB6の昔のソース
ということですが以前動作していたときのOSと今回のOSは
同一のOSなのでしょうか
関数によってはWin98とWin2000では違う動作または
サポート範囲外の関数も存在しています
wood さんへ
つき合って下さって有り難うございます。
>これまでの話からあなたのPGの動作を察すると
>
>VCで作成プログラムから呼び出し関数->
>VBで作成プログラムから呼び出し関数->
>VBA6.DLL->結果(ハング
>に成っているのではないのでしょうか
最初はそう思っていたのですが、実情はもっとシンプルでした。
試しにVBで新規にEXEを作ろうとしたら、この時にも発生し
ました。但し、アドミニは問題なし。つまり、「何かのきっかけで、
一般ユーザーでは、VBの開発ができなくなってしまっている。」
と言うのが実情です。
(このきっかけが、VCをやり始めたため、VSの動作環境が変わり
VBに障害が出たのかと思っていました)
VBで新規に標準EXEを作ろうとした時、まず、デザイン用のフォ
ームウィンドウが開いて、このウィンドウにコンポーネントを貼り
付けて、機能を実装していきます。
問題は、VBがこのフォームウィンドウを開く途中で、アクセス
障害エラーが発生しVBが落ちてしまいます。
VCをやり始めてから発生したのと、VCのデバッガを使うとエラ
ーの詳細がたぐり寄せられそうだったので、このラウンジに投稿
してみました。 現在は、VBラウンジで問い合わせ直しています。
解決したら、このラウンジにも報告したいと思います。
いろいろとアドバイス有り難うございました