現象
下記エラーが発生します。
「'Microsoft.Jet.OLEDB.4.0' プロバイダはローカルのコンピュータに登録されていません。」
顧客管理システム「ワイドベース」は、既に作者が撤退しているため連絡が取れません。
原因
64bit版Windowsには「Microsoft.Jet.OLEDB.4.0」が提供されていないためです。
顧客管理システム ワイドベースは、.NETでプラットフォームが「AnyCPU」で作成されているため、64bit版Windowsでは64bitモードで動作し「Microsoft.Jet.OLEDB.4.0」のところでエラーとなってしまいます。
対応方法
下記ツールを使用して、.NETのx86への変更します。
.NETアプリのAnyCPUを32bitに変換するツール「CorFlags 変換ツール CorFlags.exe」
参照:CorFlags.exe (CorFlags 変換ツール)
CorFlags.exeは、単独ではダウンロードできないため、開発者向けの .NET Framework のインストール から現時点の最新版の「.NET Framework 4.8 Developer Pack」をダウンロードしてインストールします。
コマンドプロンプトを開いて「CorFlags.exe」が格納されているフォルダに移動します。
cd "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools"
使用方法
「C:\Tools\ワイドベース」にインストールしてあるとします。
※「C:\Program Files (x86)\ワイドベース」していた場合、「C:\Program Files」フォルダは読み込み専用で直接ファイルを変更できないため、一時的に「WideBase.exe」のみ書き込み可能な別フォルダに移動するなどした方がいいでしょう。
corflags C:\Tools\ワイドベース\WideBase.exe /32BIT+
確認方法
corflags C:\Tools\ワイドベース\WideBase.exe
Version : v2.0.50727
CLR Header: 2.5
PE : PE32
CorFlags : 0x3
ILONLY : 1
32BITREQ : 1
32BITPREF : 0
Signed : 0
※32BITREQに「1」が立つのを確認する。ファイルの更新日時は変更されません。
【VS2012 以上に付属の CorFlags の場合】
PE = PE32+ および 32BITREQ = 0 および 32BITPREF = 0 → x64 ビルド
PE = PE32 および 32BITREQ = 1 および 32BITPREF = 0 → x86 ビルド
PE = PE32 および 32BITREQ = 0 および 32BITPREF = 1 → Any CPU (32 ビットの優先: On) ビルド
PE = PE32 および 32BITREQ = 0 および 32BITPREF = 0 → Any CPU (32 ビットの優先: Off) ビルド
【VS2010 以下に付属の CorFlags の場合】
PE = PE32+ および 32BIT = 0 → x64 ビルド
PE = PE32 および 32BIT = 1 → x86 ビルド
PE = PE32 および 32BIT = 0 → Any CPU ビルド
「ワイドベース」を起動してエラーにならないことを確認する。
※一時的に「WideBase.exe」に移動していた場合は元のフォルダに戻す。
参照
最後に
Let's ワイドベース!