トップ回答者
Windows7 32ビットオペレーティングシステムにて、「Microsoft.Jet.OLEDB.4.0 プロバイダはローカルのコンピュータに登録されていません」と表示されてしまう。

質問
-
いつもお世話になっております。雅影と申します。
この度は初めて投稿させて頂きます。
VB.NET とAccessデータベースを使用し、アプリケーションの開発し、配布を行いました。
ある場所でそのアプリケーションのインストール及び起動確認を行ったところ、1台のPCだけ
「Microsoft.Jet.OLEDB.4.0 プロバイダはローカルのコンピュータに登録されていません」
と表示され、アプリケーションが起動できません。
PCは全てWindows 7 32ビットオペレーティングシステムで、この1台以外は全て起動が確認できました。
レジストリを確認していないのですが、恐らくこのPCにはMicrosoft.Jet.OLEDB.4.0が存在していないと思われます。
質問としましては、
・このPCにMicrosoft.Jet.OLEDB.4.0をインストールするにはどのような方法を取ればよろしいでしょうか。
・以下のサイトからダウンロード、インストールで解決しますでしょうか。
http://www.microsoft.com/downloads/ja-jp/details.aspx?familyid=2deddec4-350e-4cd0-a12a-d7f70a153156
にはシステム要件にWindows7が含まれていなく、また、
には、注意事項2に「Microsoft.ACE.OLEDB.12.0に設定します」と明記されており、Microsoft.Jet.OLEDB.4.0ではないのではないか
と考えています。
以上です。宜しくお願い致します。
回答
-
# Jet エンジンを使い続けるべきかどうかは別として...。
レジストリを確認していないのですが、恐らくこのPCにはMicrosoft.Jet.OLEDB.4.0が存在していないと思われます。
Windows 7 では Windows DAC の一部として Jet 4.0 が同梱されていますので、Microsoft.Jet.OLEDB.4.0 プロバイダーが存在しないことはないはずです。
MDAC/Windows DAC を使用するアプリケーションの開発/動作環境 | サポート エンジニアからのアドバイス
http://msdn.microsoft.com/ja-jp/data/gg607260
Jet データベース エンジンを使用するアプリケーションの開発/動作環境 | サポート エンジニアからのアドバイス
http://msdn.microsoft.com/ja-jp/data/gg607262
まずは Jet エンジンが存在するかどうかを確認することが最初のステップになると思います。
C:\Windows\System32 に msjet40.dll はありますか?(まさか C:\Windows\SysWOW64 にはありませんよね?ここにあると、話が違ってきます。)
もし、msjet40.dll ない、"Microsoft.Jet.OLEDB.4.0" がレジストリを検索してもヒットしない、ということであれば、何らかの要因で Jet エンジンを消してしまったということが考えられます。 -
「Microsoft.Jet.OLEDB.4.0」で検索をすると、以下のページが上位にヒットしました。
http://support.microsoft.com/kb/303528/ja
で、このページの中に以下の記述があります。。
「注: MDAC 2.0 以前に含まれている Microsoft Access ODBC ドライバーでは、Microsoft Jet 3.5 が使用されます。MDAC 2.1 および MDAC 2.5 に含まれている Microsoft Access ODBC ドライバーでは、Microsoft Jet 4.0 が使用されます。MDAC 2.6 以降のバージョンには、Microsoft Access ODBC ドライバーは含まれていません。」
ということで、「MDAC 2.5」を検索すると、以下のページがヒットします。。
http://support.microsoft.com/kb/293312/ja
これでどうでしょうか?
当方、試してはおりませんので、違うかも知れませんが。。。。
- 回答としてマーク 雅影 2012年5月28日 8:52
すべての返信
-
「Microsoft.Jet.OLEDB.4.0」で検索をすると、以下のページが上位にヒットしました。
http://support.microsoft.com/kb/303528/ja
で、このページの中に以下の記述があります。。
「注: MDAC 2.0 以前に含まれている Microsoft Access ODBC ドライバーでは、Microsoft Jet 3.5 が使用されます。MDAC 2.1 および MDAC 2.5 に含まれている Microsoft Access ODBC ドライバーでは、Microsoft Jet 4.0 が使用されます。MDAC 2.6 以降のバージョンには、Microsoft Access ODBC ドライバーは含まれていません。」
ということで、「MDAC 2.5」を検索すると、以下のページがヒットします。。
http://support.microsoft.com/kb/293312/ja
これでどうでしょうか?
当方、試してはおりませんので、違うかも知れませんが。。。。
- 回答としてマーク 雅影 2012年5月28日 8:52
-
以下に関連した投稿があります。
http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/b5a79958-5bce-4229-a69f-75589b6240a8
要約すると、CPUの選択でAny CPUではなくx86を選択する、とあります。自分はMicrosoft.ACE.OLEDB.12.0しか使わないし、主にOSはMac OS Xを使っているので、あまりそれ以上詳しいことはわかりません。Onion is a recent refuge from Mac OS X and hates Mac App Store. System: Windows 7 x64
- 回答の候補に設定 山本春海 2012年5月15日 6:34
-
# Jet エンジンを使い続けるべきかどうかは別として...。
レジストリを確認していないのですが、恐らくこのPCにはMicrosoft.Jet.OLEDB.4.0が存在していないと思われます。
Windows 7 では Windows DAC の一部として Jet 4.0 が同梱されていますので、Microsoft.Jet.OLEDB.4.0 プロバイダーが存在しないことはないはずです。
MDAC/Windows DAC を使用するアプリケーションの開発/動作環境 | サポート エンジニアからのアドバイス
http://msdn.microsoft.com/ja-jp/data/gg607260
Jet データベース エンジンを使用するアプリケーションの開発/動作環境 | サポート エンジニアからのアドバイス
http://msdn.microsoft.com/ja-jp/data/gg607262
まずは Jet エンジンが存在するかどうかを確認することが最初のステップになると思います。
C:\Windows\System32 に msjet40.dll はありますか?(まさか C:\Windows\SysWOW64 にはありませんよね?ここにあると、話が違ってきます。)
もし、msjet40.dll ない、"Microsoft.Jet.OLEDB.4.0" がレジストリを検索してもヒットしない、ということであれば、何らかの要因で Jet エンジンを消してしまったということが考えられます。 -
こんにちは、雅影 さん。
MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。
参考になるアドバイスをいただいているように思われましたので、勝手ながら私の方で一旦回答としてマークさせていただきました。
アドバイスくださったみなさん、ありがとうございます。いただいた情報の中で、解決に役立った投稿や、参考になる情報など有効な情報には回答としてマークすることをお願いしています。
今後、同じ問題でこのスレッドを参照される方にも、有効な情報を活用いただけるかと思いますので、ご協力よろしくお願いいたします。雅影 さん、もしまだ解決されていない場合には現在の状況や確認したことなど情報更新していただくと他にも情報が得られるかもしれません。
_____________________
日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海 -
お世話になります。同じようなエラーが解決できないので、フォーラムを読んでいたのですが、
まずは Jet エンジンが存在するかどうかを確認することが最初のステップになると思います。
C:\Windows\System32 に msjet40.dll はありますか?(まさか C:\Windows\SysWOW64 にはありませんよね?ここにあると、話が違ってきます。)
もし、msjet40.dll ない、"Microsoft.Jet.OLEDB.4.0" がレジストリを検索してもヒットしない、ということであれば、何らかの要因で Jet エンジンを消してしまったということが考えられます。C:\Windows\System32 に msjet40.dll には無くて、C:\Windows\SysWOW64 にはありました。
このような場合は、どう、対処すればよろしいでしょうか?
C:\Windows\System32 に msjet40.dll をコピーすればいいのでしょうか?
-
C:\Windows\System32 に msjet40.dll をコピーすればいいのでしょうか?
だめです。
SysWOW64 は 64bit 版 Windows 環境において、32bit アプリケーションを動かすために用意されている 32bit の DLL などが置かれているフォルダーになります。
逆に、64bit 版 Windows における System32 は 64bit アプリケーションを動かすために用意されている 64bit の DLL などが置かれているフォルダーになりますので、32bit の DLL を置くことは NG です。ところで、問題が起きているアプリケーションプロジェクトは x86 指定になっているのでしょうか?
-
お返事ありがとございます。
>ところで、問題が起きているアプリケーションプロジェクトは x86 指定になっているのでしょうか?
いろいろ調べてみました。ビルドの構成マネージャーをx86に設定する。
という文章を見つけましたが、VisualBasic2010EEでは、ビルドをクリックしても、構成マネージュアーの設定画面が出てきません。
結局、x86の設定はできなのでしょうか?
ことの始まりは、WidowsXpで、VisualBasic2008EEで作ったプロジェクトファイルをWidouws7でVisualBasic2010EEをダウンロードして、VisualBasic2008で作ったプロジェクトファイルをビルドして、実行させたときに、、「Microsoft.Jet.OLEDB.4.0 プロバイダはローカルのコンピュータに登録されていません」と表示されてしまいました。
WidowsXpで、VisualBasic2008EEで作ったプロジェクトファイルをVisualBasic2010EEで読み込みしたときに、プロジェクトの変換は実行されてました。
解決策が知りたかったので、このフォーラムに投稿しました。
- 編集済み タッチ1218 2012年6月30日 9:28
-
一番楽なのは、Visual Basic 2010 Express でプロジェクトを作り直すことです。
Visual Basic 2010 Express からはデフォルトのターゲットが x86 になっていますので、問題が発生しなくなります。次点として、vbproj をテキストエディターなどで開いて、AnyCPU となっている箇所を x86 に書き換えることです。書き換える際は UTF-8 をサポートしたテキストエディターをお使いください。
(わからない場合はプロジェクト作り直してファイルを移し直した方が楽かも)Express Edition の制限として、画面からターゲットを変更することができません。
従って、テキストエディターで変更するしか手立てはありません。 -
お返事ありがとうございます。
とりあえず、
次点として、vbproj をテキストエディターなどで開いて、AnyCPU となっている箇所を x86 に書き換えることです。書き換える際は UTF-8 をサポートしたテキストエディターをお使いください。
でしてみます。
だめでいたら、プロジェクトを作り直します。
本当にたすかりました。
結果は後程、アップします。
素早いご回答でありがとうございます。感謝してます。
次点として、vbproj をテキストエディターなどで開いて、AnyCPU となっている箇所を x86 に書き換えることです。書き換える際は UTF-8 をサポートしたテキストエディターをお使いください。
上記してみましtが、やはり解決できませんでした。
イミディエイトウィンドに
System.InvalidOperationExceptionの初回例外がSystem.Data.dllで発生しました。
とのエラー表示がでます。
いくつかアプリケーションを作ってますが、簡単なのは、もう一度、作り直してみますけど、複雑なのはできれば、エディターで書き直した方が簡単ですので、解消方法を知りたいです。NetFreamWorkのバージョンも3.5から4.0になるのですが、その影響はないのでしょうか?初歩的な質問ばかりで申し訳ありません。
- 編集済み タッチ1218 2012年7月1日 4:26
-
あいにくと試せる環境がないのですが、[上級者用の設定] にすればプラットフォームは選択できるのではないでしょうか。
Visual Basic 2010 Express 64Bit Development
http://social.msdn.microsoft.com/Forums/en-CA/vbgeneral/thread/c8fcc830-24e4-4a85-9782-73bbf48105aa
VB2010 Express + NUnit 2.5 で、 初めてのTDD Step by Step: TDD.NET
http://www.tdd-net.jp/vb2010ee-nunit25-tdd-stepbystep.html