実行時エラー

実行時エラー'339'、コンポーネント '???.OCX'、またはその依存関係のひとつが 適切に登録されていません。ファイルが存在しないか、あるいは 不正です。

最終更新日:2009/5/16

OCX を利用するには、レジストリに登録する必要があります。通常はプログラムのセットアップを行えばレジストリに登録されるはずなので、このエラーは発生しません。 エラーが発生するとしたら、次の2つの原因が考えられます。

  1. EXE ファイルをコピーしただけなどの理由で、レジストリに OCX が登録されていない。
  2. レジストリに OCX を登録しようとしたが失敗した。
問題は 2. の方です。OCX の登録は Regsvr32 コマンドを使えば手動でもできるのですが、Windows XP でこれを実行しても失敗する OCX がありました。その名前を聞くと imgedit.ocx。 VB に付属の OCX ではないので開発元を検索してみると、Windows 95 から 2000 まで標準装備されていた Kodak社製のイメージングというソフトに付属する OCX であることが判明しました。それをほかのソフトで利用して Windows XP に登録するのは、ライセンス上の問題があるのでは…。

※MSDN ライブラリのエラー番号の一覧に載っていない番号です。

MSI形式のインストーラーで OCX がインストールされた場合に、そのプログラムを制限ユーザー(Userグループ)で実行すると、同じエラーが発生することもあるようです。可能であれば、ユーザーアカウントの権限を標準ユーザー(PowerUserグループ)に変更することも検討してみましょう。

コンポーネント 'MSCOMCTL.OCX'、またはその依存関係のひとつが適切に登録されていません。

Windows Vista や 7 の UAC が機能している環境下では、プログラムを互換モードで起動しても管理者として実行しても、このエラーが発生することがあります。その場合には、Regsvr32 コマンドで該当の OCX の登録をいったん解除し、登録しなおすことで解決する場合があります。

  1. スタートメニューから「すべてのプログラム」をクリックします。
  2. アクセサリの中にある「コマンドプロンプト」を右クリックし、「管理者として実行」をクリックします。
    Windows Vista の検索の開始ボックスからプログラムを管理者として実行する方法

    管理者として実行

  3. regsvr32 /u mscomctl.ocx コマンドを実行し、登録を解除します。

    regsvr32 /u mscomctl.ocx

  4. regsvr32 mscomctl.ocx コマンドを実行し、再登録します。

    regsvr32 mscomctl.ocx

  5. これらの作業を、エラーメッセージが登録される OCX ファイルに対して順次行います。私の自作ソフトの QuickReg では、mscomctl.ocx と msflxgrd.ocx に対して行うことで、プログラムが起動するようになりました。

<関連URL>

  • Kodak Imaging for Windows は Windows XP に含まれない