4

Webサーバーを移動しようとしています。私たちのアプリ (be kind) は 1998 年に (私が思うに) VB6 で書かれました。新しいサーバー (Windows Server 2008 R2 64 ビット) で動作しています。ただし、自分のマシン (Windows 7 64 ビット) でソース コードを取得し、exe をサーバーに転送すると、アプリがデータベースに接続しようとすると、「エラー 430 (クラスはサポートしていません)自動化または予期されるインターフェイスをサポートしていません)」

このプロジェクトは、Microsoft Activex Data Objects 2.8 Library を参照しています。エラーが発生する行は

Set conn = New adodb.Connection

したがって、実際にデータベースに接続しようとしているのではなく、オブジェクトを作成しようとしているときに純粋に爆発しています。

誰でもこの種のエラーの経験はありますか? または私への提案はありますか?Google にはいくつかの可能性がありましたが、どれもうまくいきませんでした。それらのほとんどは、コモン コントロールと「プロジェクトの互換性」を使用する必要がありましたが、私のアプリは「無人実行」で実行されるため、それを選択できません (プロジェクトのプロパティで完全に無効になっています)。

4

1 に答える 1

4

これは、Microsoft が SP1 で導入した MDAC に対する重大な変更です。このMSDN フォーラム スレッドを確認してください。回避策についていくつかの提案があります。現在のところ、Microsoft からの修正はありません。

私は 32 ビットの Windows 7 でこれに遭遇し、最終的に SP1 をロールバックしました。

提案の 1 つは、更新された (壊れた) mdac dll を、サービスがパックされていないマシンの 1 つに置き換えることです。

  1. Regeditを開き、キーを見つけますHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib\{2A75196C-D9EB-4129-B803-931327F72D5C}

  2. 右クリック、権限、詳細設定、所有者、所有者を管理者に変更、OK をクリック、OK

  3. 走るC:\Windows\Microsoft.NET\Framework\v4.0.30319\regtlibv12 -u "%CommonProgramFiles(x86)%\system\ado\msado28.tlb"

  4. msado28.tlbWin7 RTM/Win2008R2 RTM からローカル マシンにコピーします。次のステップのためにフォルダーをメモします。

  5. 走るC:\Windows\Microsoft.NET\Framework\v4.0.30319\regtlibv12 "{path}\msado28.tlb"

これらの手順は、64 ビット Windows 用です。パスを調整して 32 ビットでも同じにする必要があります。

于 2011-03-29T13:23:12.657 に答える