Windowsで古いソフトを起動しようとすると「Component 'MSCOMCTL.OCX' or one of its dependencies not correctly registered: a file is missing or invalid」というエラーが出て起動できないことがあります。
これは起動したいソフトに必要な「mscomctl.ocx」というファイルがパソコンに入っていない、もしくは壊れている時に出るエラーです。
特にWindows10/11などの新しい環境のパソコンの場合は、新しくインストールする必要があるのでこの流れをまとめました。
この記事の目次
MSCOMCTL.OCXにエラーが出た時の対処方法
以前、Windows11搭載パソコンにて少し古いソフトをインストールして起動しようとしたところ、以下のようなエラー画面が出ました。
このエラーをGoogle翻訳にかけてみると以下のような意味です。
エラーの内容ですが、これは要するにソフトに必要となる「MSCOMCTL.OCX」というファイルがパソコン内に見つかりませんでした。という内容のエラーです。
MSCOMCTL.OCXとは?
「MSCOMCTL.OCX」というのはMicrosoftの「ActiveXコントロールファイル」と呼ばれるファイルの1つのようです。Visual Basic6.0(通称VB6)の中に含まれるファイルの1つとのこと。
どうやら1990年代に主流となっていたコンポーネントの1つで、その頃のソフトにはこのコンポーネントが必要になることがあるみたい...
ただし今現在はサポートは終了しているようで、現在のWindows10/11などの新しいパソコンには元々「MSCOMCTL.OCX」が入っていないみたいです。
一昔前のパソコンならエラーなしで問題なく起動できるはずですが、新しいパソコンで古いソフトを起動しようとすると今回のようなエラーが出るようです。
MSCOMCTL.OCXをインストールする方法
原因が分かったので早速「MSCOMCTL.OCX」をパソコンにインストールします。
まずは「MSCOMCTL.OCX」が含まれる実行ファイルを入手します。
以下の公式サイトから「Microsoft Visual Basic 6.0」をダウンロードしましょう。
外部リンク
ページを開いてそのまま「ダウンロード」ボタンを押せばOKです。
今回は「VisualBasic6-KB896559-v1-JPN.exe」というファイル名で入手できました。
こちらはインストーラーになっているので、そのまま実行しても良いのですが、今回は「MSCOMCTL.OCX」だけが欲しかったので手動でインストールします。
ダウンロードした.exeを解凍する
先ほど公式サイトから入手した「VisualBasic6-KB896559-v1-JPN.exe」を解凍すれば「mscomctl.ocx」を単体で使用することができます。
実行ファイル(~.exe)を右クリックして任意の解凍ソフトで解凍しましょう。
解凍すれば色々なファイルが展開されますが、その中に「mscomctl.ocx」というのがあるのでこれを使用します。
mscomctl.ocxをシステムフォルダに配置する
実行ファイルを解凍したら、その中にある「mscomctl.ocx」をコピーします。
そして以下のフォルダに「mscomctl.ocx」を配置します。
OSが64bitの場合
OSが64bitなら「SysWOW64」フォルダ内に「mscomctl.ocx」を配置します。
C:¥Windows¥System32- C:¥Windows¥SysWOW64
よく分からない方は、上記の両方のフォルダに「mscomctl.ocx」をコピーしても特に問題は起きません。
OSが32bitの場合
- C:¥Windows¥System32
OSが32bitなら「System32」というフォルダ内に「mscomctl.ocx」を配置します。
この場合「SysWOW64」というフォルダはそもそも存在しないと思います。
なおシステムフォルダなので、コピーする際は管理者権限が要ります。
上の画像のような画面が出たら「続行」を押せばOKです。
コマンドプロンプトでmscomctl.ocxを有効化する
システムフォルダ内に「mscomctl.ocx」をコピーしたら、後は有効化するだけです。
有効化するにはコマンドプロンプトを使用します。
コマンドプロンプトを管理者権限で実行しましょう。
(検索欄にcmdと打つとすぐに出てきます。)
続いて以下のコマンドを入力します。
「mscomctl.ocx」を配置した場所によってコマンドが異なる点にご注意下さい。
SysWOW64に配置した場合
直接パスを指定する場合は以下です。
command
C:\Windows\SysWOW64\regsvr32 mscomctl.ocx
基本は↑のコマンドをコピペすればOKなはずですが、以下のようにcdコマンドで「SysWOW64」に移動してからでも同じことができます。
command
cd C:\Windows\SysWOW64
regsvr32 mscomctl.ocx
このようにSysWOW64内に「mscomctl.ocx」を配置した時は、コマンドプロンプトの作業ディレクトリに注意が必要です。
System32に配置した場合
System32内に「mscomctl.ocx」を配置した時は、コマンドプロンプトを管理者権限で開けば作業ディレクトリは「System32」になっていると思うので、そのまま以下のコマンドを実行すればOKです。
command
regsvr32 mscomctl.ocx
入力したらエンターを押せばOKです。
(Ctrl+Cでコピー、コマンドプロンプト上でCtrl+Vを押せばペーストが可能。)
mscomctl.ocxのDllRegisterServerは成功しました。
というメッセージが出ればOKです。
もしエラーが出てしまう時は「mscomctl.ocx」の配置場所、及びコマンドプロンプトを管理者権限で実行しているかどうかをもう一度確認して下さい。
あとは「Component 'MSCOMCTL.OCX' or one of its dependencies not correctly registered: a file is missing or invalid」というエラーが出ていたソフトを再起動し、無事に起動することを確認しましょう。
まとめ
以上、Windows10やWindows11でMSCOMCTL.OCXをインストールする方法でした。
今回は「mscomctl.ocx」のみを有効化しましたが、同様の方法で「comctl32.ocx」も有効化することができます。続けて「comctl32.ocx」に同じエラーが出た時はこれもシステムフォルダに配置後、コマンドプロンプトを使って有効にしましょう。
余談ですが、MSCOMCTL.OCXのインストール後は別のコンポーネントが無い!というエラーに変わりました…これもまた別の記事でご紹介したいと思います。
古いソフトを新しいパソコンで使うのはなかなか苦労しますね~
ではではこのへんで・w・
関連記事
【COMDLG32.OCXに同じエラーが出る時はこちらをご参考下さい!】
【Windows】ソフト起動時に「COMDLG32.OCX」エラーが出る時の解決策。