1. ホーム
  2. c#

[解決済み】「Microsoft.Jet.OLEDB.4.0」プロバイダがローカルマシンに登録されていない。

2022-04-11 20:33:10

質問

32ビットのWindows 2008サーバーで、.NET 3.5で開発したWindowsアプリケーションを作成しました。このアプリケーションを64ビットのサーバーに展開すると、「Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine "」というエラーが表示されます。

そこで、この問題の解決策として、プロジェクトのビルドプロパティをX86に変更し、32ビットモードでビルドするようにし、32ビットマシンでプロジェクトをリビルドしています。しかし、同じプロジェクトは、他のデータベースに接続するために、他のDBドライバ(DB2、SQLなど)を使用しています。そのため、64ビットOSでアプリを再度デプロイすると、例外 " Attempted to load a 64-bit assembly on a 32-bit platform. " がスローされました。

Microsoft.Jet.OLEDB.4.0 ドライバを使用して、Excel (.xls) への読み取りと書き込みを行っています。

どのように解決するのですか?

この問題に対する解決策が見つかりました。私の質問で説明した問題は基本的に Microsoft.Jet.OLEDB.4.0 ドライバ 64bitOSの場合。

つまり、64ビットサーバーでMicrosoft.Jet.OLEDB.4.0ドライバーを使用する場合、アプリケーションを強制的に32ビットモードで構築する必要があります(これは、私がこのことを徹底的に検索したときに見つけた回答です)。 既知の問題 ) があり、私のコードの他の部分が壊れる原因となっています。

幸いなことに、現在マイクロソフトは、64ビット対応の 2010年版Officeシステムドライバ 従来のMicrosoft.Jet.OLEDB.4.0ドライバの代わりとして使用できます。これは、32ビットと64ビットの両方のサーバーで動作します。私はExcelファイルの操作に使用しましたが、どちらの環境でも問題なく動作しました。 しかし、このドライバは BETA .

このドライバは以下からダウンロードできます。 Microsoft Access データベースエンジン 2010 再頒布可能ファイル