DOBON.NET DOBON.NETプログラミング掲示板過去ログ

KernelBase.dll障害の対応方法

環境/言語:[WindowsXP SP3,Windows 7 SP1,VB2010Express,.NET Framework 4]
分類:[.NET]

初めて質問させていただきます。

WindowsXP環境で作成したVB2010のプロジェクトのフォルダを丸ごと、Windows7環境へコピーして、exeを実行してみましたが、何も反応がなくて困っています。(エラーメッセージが出るわけでもなく、本当に何も反応がありません。)

Windows7でのイベントビューアを確認してみたところ、以下のエラー文が出力されていました。

--------------------------------------
障害が発生しているアプリケーション名: 〇〇〇.exe、バージョン: 1.0.0.0、タイム スタンプ: 0x4fa0944c
障害が発生しているモジュール名: KERNELBASE.dll、バージョン: 6.1.7601.17651、タイム スタンプ: 0x4e2111c0
例外コード: 0xe0434352
障害オフセット: 0x0000d36f
障害が発生しているプロセス ID: 0x1450
障害が発生しているアプリケーションの開始時刻: 0x01cd2823129e4398
障害が発生しているアプリケーション パス: C:\〇〇\bin\Debug\〇〇〇.exe
障害が発生しているモジュール パス: C:\Windows\system32\KERNELBASE.dll
レポートID:4fa5b7a3-9420-11e1-9253-005056c00008
--------------------------------------

KERNELBASE.dllに異常があるという文が見受けられ、
このKERNELBASE.dllが何をやっているdllなのかは分からないのですが、
試しに、ウェブサイトからKERNELBASE.dllをダウンロードして、
入れ直してみても状況は変わりませんでした。

どなたか心当たりがある方がいれば、教えていただけると幸いです。

なお、Windows7環境にはVB2010の開発環境は入っていません。
しかし、別のVB2010の開発環境が入っているWindows7であれば、exeの実行が可能でした。

.NET Framework 4がインストールされていれば、動くという認識でいるのですが…。
configファイルだとか、DB接続などは、まだ関与していません。


よろしくお願いいたします。
■No30385に返信(SEKAさんの記事)
> Windows7でのイベントビューアを確認してみたところ、以下のエラー文が出力されていました。

依存ファイル不足のようですね。
http://uky0426.wordpress.com/2011/06/25/net%E3%81%A7%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E3%82%82%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%E3%81%AF%E3%82%A4%E3%83%99%E3%83%B3/

# 短縮URLで載せようとしたら、掲示板の入力制限で弾かれた…。


> .NET Framework 4がインストールされていれば、動くという認識でいるのですが…。
・そのアプリはx86ビルドか、x64ビルドか、AnyCPUビルドか
・実行環境の Windows は 32bit版か 64 bit版か
・どのアセンブリを参照設定しているか
・ライセンスを必要とするライブラリを利用していないか
・アプリのターゲットフレームワークは何になっているか
 * .NET Framework 2.0
 * .NET Framework 3.0
 * .NET Framework 3.5
 * .NET Framework 3.5 Client Profile
 * .NET Framework 4
 * .NET Framework 4 Client Profile
魔界の仮面弁士様

ご回答いただきありがとうございます。
GWでお休みでしたので、返信が遅れまして申し訳ありません。

>・そのアプリはx86ビルドか、x64ビルドか、AnyCPUビルドか
AnyCPUでビルドしています。と言いますか、それ以外選べませんでした。

>・実行環境の Windows は 32bit版か 64 bit版か
Windows7 32bit版です。

>・ライセンスを必要とするライブラリを利用していないか
利用していません。

>・アプリのターゲットフレームワークは何になっているか
NET Framework 4 Client Profileです。
サーバー環境は構築しませんのでFULL版は不要と判断しています。

>・どのアセンブリを参照設定しているか
おそらくここら辺?が関係しているのかと思い、調べてみたところ
LineShapeやOvalShapeなどのPowerPocksのコンポーネントのハンドルされないエラーが発生していることが分かりました。

これの解消方法はまだ調べている途中ですが、
何か分かることがあれば、ご教授願えるとありがたいです。

よろしくお願いいたします。
不具合の発生しているPCにはPowerPacksがインストールされていますか?
確か、PowerPacksを使用しているexeをコピーするだけでは動かず、PowerPacksを再配布する必要があったと思います。
ズッカ様
ご返答いただきありがとうございます。

> 不具合の発生しているPCにはPowerPacksがインストールされていますか?
確かにMicrosoft VisualBasic PowerPacks 3.0はインストールされていませんでした。

> 確か、PowerPacksを使用しているexeをコピーするだけでは動かず、PowerPacksを再配布する必要があったと思います。
試しにMicrosoft VisualBasic PowerPacks 3.0をインストールしてみましたが、やはり動きませんでした。
エラーメッセージには、「ファイルまたはアセンブリ'Microsoft VisualBasic PowerPacks.vs,Version=10.0.0.0,Culture…〜またはその依存関係の1つが読み込めませんでした。指定されたファイルが見つかりません。」
というメッセージが変わらず表示されています。

インストールしたPowerPacksのバージョンは、9.0.30214です。
10.0.0.0というものはあるのでしょうか?

それとも、私のやろうとしている事が根本的に間違っているのでしょうか?


申し訳ありませんが、よろしくお願いいたします。

----------
この記事は クリエイティブ・コモンズ 表示 - 継承 3.0 非移植 ライセンスの下に提供されています。
http://creativecommons.org/licenses/by-sa/3.0/
> 試しにMicrosoft VisualBasic PowerPacks 3.0をインストールしてみましたが、やはり動きませんでした。

再配布の場合、PowerPacksのdllは基本的にexeのパスと同じ位置に配置する必要があったような気がします。
不確かな情報でゴメンナサイ。
ズッカ様

>再配布の場合、PowerPacksのdllは基本的にexeのパスと同じ位置に配置する必要があったような気がします。
仰る通り、Microsoft VisualBasic PowerPacks.Vs.dllをexeと同じ位置に配置したら動きました。

ちなみにこのファイルは、開発環境であるWindowsXPの
C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualBasic.PowerPacks.Vs\10.0.0.0__b03f5f7f11d50a3a
の中にあったものをコピーしました。

10.0.0.0というのは、これのことを言うのですね。

開発環境であれば、このdllがexeと同じ位置なくても動くので、配布環境との違いがイマイチ分からないですが、解決とさせていただきます。

魔界の仮面弁士様、ズッカ様、ありがとうございました。
解決済み!
2012/05/07(Mon) 19:50:53 編集(投稿者)

> 開発環境であれば、このdllがexeと同じ位置なくても動くので、配布環境との違いがイマイチ分からないですが、解決とさせていただきます。

調べてみると、以下のサイトに本件に関連した内容があり、

http://bokuibi.blogspot.jp/2009/07/netexedll.html

これを簡単に噛み砕くと、開発環境では、パスが通っているところに該当dllがあるので参照可能となるが、
コピー先ではそうなっていないので、dllが見つからない、ということになるようですね。

ただし、上記サイトではライセンスについての言及があり、どうやら単純にdllをコピーすることはライセンスに抵触するようです。
このため、Power Packsを再配布する場合は、インストーラー等で必須コンポーネントとして配布する必要がありそうです。
解決済み!
2012/05/07(Mon) 22:32:10 編集(投稿者)

■No30412に返信(SEKAさんの記事)
> AnyCPUでビルドしています。と言いますか、それ以外選べませんでした。
Express の場合、*.sln や *.*proj を手動変更しない限りは変更されません。


>> 不具合の発生しているPCにはPowerPacksがインストールされていますか?
> 確かにMicrosoft VisualBasic PowerPacks 3.0はインストールされていませんでした。

VB2010 対応版は、"Microsoft Visual Basic PowerPacks 10.0" というバージョンです。
VS 自体に同梱されているため、開発環境(の GAC)には導入済みでしょうね。


> 試しにMicrosoft VisualBasic PowerPacks 3.0をインストールしてみましたが

それは VS2010 用ではありません。入手したのは恐らく下記ですよね。

[Visual Basic Power Packs 3.0] … 2008/02/15 Version 3.0
http://www.microsoft.com/en-us/download/details.aspx?id=25169
http://download.microsoft.com/download/1/2/a/12aa9b28-4f67-42c3-9319-684e8ad6f0ae/VisualBasicPowerPacks3Setup.exe
http://msdn.microsoft.com/ja-jp/vbasic/bb735936

これらのリリース時期は、VS2010 Express よりもかなり前ですし、インストール時の
ライセンス情報欄にも『Visual Studio codename "Orcas"』(※1)との記載がありました。


> インストールしてみましたが、やはり動きませんでした。
再頒布用のブートストラップ パッケージが、開発環境の Program Files 配下(※2)の
 Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\VBPowerPacks\
 Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\VBPowerPacks\
あたりにあると思いますので、確認してみてください。

v7.0A の下にあるものが 10.0 系、V6.0A の下にあるものが 9.0 系です。
VB2010 (.NET Framework 4) の場合には、10.0 系統のバージョンを利用してください。
再頒布条件などが書かれたテキストも置いてあるはずです。

なお当方は VS2010 Ultimate / VS2008 Development / VS2005 Team Suit であって、
VB2010 Express ではないため、そちらとは事情が多少異なるかも知れませんが、
v7.0A の下にあるものは 10.0.30319.1 というバージョン(VS2010用)、
v6.0A の下にあるものは 9.0.30729.1 というバージョン(VS2008用)、
であるようです。Service Pack の状況にも左右されるかもしれませんが。



> インストールしたPowerPacksのバージョンは、9.0.30214です。
> 10.0.0.0というものはあるのでしょうか?

とりあえず「アセンブリバージョン」で言えば、
 VB2010(VB10.0)で利用されるのは、10.0.0.0 というバージョン
 VB2008(VB9.0) で利用されるのは、 9.0.0.0 というバージョン
 VB2005(VB8.0) で利用されるのは、 8.0.0.0 というバージョン
だと思ってください。


「ファイルバージョン」で言えば、
 10.0.40219.1
 10.0.30319.1
  9.0.30729.1
  9.0.30214.0
などがあります。(※3)


これらに加えて、「PowerPack(s) の製品バージョン」(※4)もあるので混乱しきり…。



----
(※1) "Orcas" とは、VS2008 の開発コードネームです。
(※2) 32bit OS では "C:\Program Files\"、64bit OS では "C:\Program Files (x86)\" です。
(※3) 概ね、Visual Studio のバージョン情報ダイアログに表示される VS バージョンに合致するようです。
(※4) 無印(1.0)、1.1、1.2、2.0、3.0 など。また、VB.NET2003、2005、2008 用で
 それぞれ別物だったり、初期版は機能ごとに個別のアセンブリになっていたり…。
2012/05/07(Mon) 22:39:09 編集(投稿者)

■No30416に返信(SEKAさんの記事)
> 仰る通り、Microsoft VisualBasic PowerPacks.Vs.dllをexeと同じ位置に配置したら動きました。

その配布方法は *厳禁* です。
代わりに、No30418 に記載したブートストラップパッケージを使いましょう。

VB2010 付属の PowerPacks 10.0 を再頒布する方法として許諾されているのは、
 「VisualBasicPowerPacksSetup.exe を未変更の状態で再頒布すること」
だけであり、構成部品である DLL 単体での再頒布は許可されていないはずです。


ファイルの単体配布が禁じられているケースは、PowerPacks に限った話では
ありませんので、この機会に eula.txt および redist.txt に目を通して
おかれることを *強く* お奨めします。

なお、たとえ VB 側で再頒布が許諾されたファイルと同名ファイルであっても、
別製品(OS、Office、あるいはそれらの Service Pack 等)に付属している
ファイルの場合、VB/VS 付属のそれとは異なるライセンスが適用されます。



ちなみに今回の情報を探すに当たり、bing や google でいろいろ探してみたのですが、
PowerPacks 10.0 単体でのダウンロード URL は見当たらなかったため、再頒布には、
やはり VS2010 付属の VisualBasicPowerPacksSetup.exe を使う事になるでしょう。

# 一応、http://go.microsoft.com/fwlink/?LinkID=145727 が見つかりましたが、
# これは "プレリリース版"(10.0.20911.1)であり、現在は利用期限が切れています。
ズッカ様

>これを簡単に噛み砕くと、開発環境では、パスが通っているところに該当dllがあるので参照可能となるが、コピー先ではそうなっていないので、dllが見つからない、ということになるようですね。
なるほど、VS環境はそのあたりを勝手にやってくれるので、気にならなかったということなんですね。

>ただし、上記サイトではライセンスについての言及があり、どうやら単純にdllをコピーすることはライセンスに抵触するようです。
>このため、Power Packsを再配布する場合は、インストーラー等で必須コンポーネントとして配布する必要がありそうです。
ライセンスの絡みがあるのですね。気を付けたいと思います。


魔界の仮面弁士様

丁寧な説明をいただきありがとうございます。

>再頒布用のブートストラップ パッケージが、開発環境の Program Files 配下(※2)の
>Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\VBPowerPacks\
>Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\VBPowerPacks\
>あたりにあると思いますので、確認してみてください。
ありました。
配布環境で、VisualBasicPowerPacksSetup.exeを実行、インストールしたところ
exeと同じ位置にdllを配置しなくても動くことが確認できました。

>ファイルの単体配布が禁じられているケースは、PowerPacks に限った話ではありませんので、この機会に eula.txt および redist.txt に目を通しておかれることを *強く* お奨めします。
はい、この手の話は全く無知でした。きちんと把握しておきたいと思います。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板