2012年7月4日水曜日

32bitと64bitの違いによるコマンドの違い

先日、会社で使用しているシステムに突然の不具合が起きる。
OSはWindows7

サポートしている部署に、問い合わせをすると
コマンドを入力するように指示をされた

手順書をもらったので、コマンドをコピーし貼り付けたのだが

Regsvr32というタイトルのダイアログが出た

赤い×印の横には

モジュール
C¥WINDOWS¥system32¥MSCOMCTL.ocx の読み込みに失敗しました。
バイナリが指定されたパスに格納されていることを確認するか、バイナリまたは依存.DLLファイルに問題が無いかしらべてください。
指定されたモジュールが見つかりません。


この事を伝えると、これ以上はわかりません的な回答が返ってきた・・・

何か気になる
私は構文とか、コマンドはほとんど詳しくない。けれど・・・

まず、その前からエラー表示とかに、利用PCの使用ファイル名とかが一致してなくて
すごく違和感があったので、納得いくまで調べようと思い考えてみました。

要するに

MSCOMCTL.ocx がどうにかなってて、そこをコマンドで通してあげれば解決するんだよな・・・(多分)
という根拠の無い予測で、検索をした・・・かなり・・・いろんな組み合わせでw

どの検索ワードでヒットしたか覚えてませんが

このページに辿り着きました。
http://kuma1013.blog9.fc2.com/

ここのページの該当部分を下に転載しておきます。(全文はリンクで飛んで読んでくださいね)

以下転載
===========================
MSCOMCTL.OCXは32ビットの代物
・つまりx64システムでは、WoW64上で動く=System32ではなくSysWOW64で登録しなきゃダメ
ということらしい。

なので、以下の手順を踏む。

・スタート→「cmd」と入力→cmd.exeを右クリック:管理者として実行→「はい」をクリック
・以下、赤文字を入力
 C:\Windows\system32>cd ../SysWOW64[Enter]
 C:\Windows\SysWOW64>regsvr32 MSCOMCTL.OCX[Enter]

これで普通に起動できるようになります。

===========================

ああ、そうか
そうだよね・・・理論的にそうだわ・・・(なんか納得)

そこで、今回の利用PCをチェック

やはり、64bitでした。

そこで、上記のコマンドを入力

先ほどのエラーは出ずに、成功しました旨の表示が出た!
よっしゃ!

さて、システムはどうかな・・・と確認
ちゃんと動作しました!
思わずガッツポーズw


もし、同じエラーでお困りの方がいましたら、使用PCのプロバティから32bitか64bitかを確認してください

32bitの時は 

C:\Windows\system32>regsvr32 MSCOMCTL.OCX[Enter]

64bitの時は

C:\Windows\system32>cd ../SysWOW64[Enter]
C:\Windows\SysWOW64>regsvr32 MSCOMCTL.OCX[Enter]



良い勉強になりました。
リンク元のブログ主さんに感謝です。