0

Windows 7環境で動作させようとしているVB6アプリケーションがありますが、アプリケーションを起動するたびに、次のエラーが発生します。

「コンポーネント'ComCt332.ocx'またはその依存関係の1つが正しく登録されていません:ファイルが見つからないか無効です」。

解決するために、管理者モードのコマンドプロンプトでzippy32を実行してcomct332.ocxファイルを登録しようとしましたが、エラーが発生します。

「モジュール「comct332.ocx」がロードされましたが、DllRegisterServerの呼び出しがエラーコード0x80004005で失敗しました。」

私が試した他のことは次のとおりです。

  • 'comct332.ocx'が存在するレジストリ内のすべての親ノードを削除し、管理者モードでzippy32を再度実行します。同じ結果。

  • PC上の別のユーザーに管理者権限を付与したところ、ファイルを正常に登録でき、アプリケーションが正常に起動して実行されました。しかし、前のユーザーとして再度ログインすると、惨めに失敗します。

どんな助け、考え、他の試みも大いに感謝されるでしょう。ありがとう

4

1 に答える 1

2

VB6を引き続き正常に使用するために必要なことを続けている場合は、気付くことがいくつかあります。

  • これらの1つは、UACとユーザーごとのレジストリ仮想化の影響です。

  • もう1つは、64ビットシステムでのSysWOWレジストリリダイレクトの影響です。

適切なインストールパッケージがこれまで以上に重要であることを理解できます。Windowsには、レガシーソフトウェア用の多くの自動修復機能がありますが、それらの一部では、アプリケーションが本来意図されたすべての動作を実行することはありません。それらのほとんどは、アプリケーションがインストールから2回目の実行まで「正しいパスをたどる」場合にのみ適用されます。

ここでは、適切なWindowsインストーラーパッケージ、または少なくともWindowsの「レガシーインストーラー検出ヒューリスティック」によってそのように認識されたレガシーセットアップを使用して処理することを目的としたケースがあります。一般に、レガシースクリプトセットアップは非推奨ですが、パスに留まっている限り、Windowsはそれらが成功するように努力します。

多数のファイルをコピーしてregsvr32それらの一部をランダムに実行するだけで手動でデプロイすると、成功の可能性が低くなります。とにかく、これは承認された展開方法ではありませんでした。

ほとんどの場合、レジストリの仮想化とリダイレクトの組み合わせに違反している可能性があります。

ユーティリティはregsvr32開発ツールであり、展開ツールではありません。デプロイメントに使用することを主張する場合は、開発者が従わなければならないのと同じルールに従う必要があります。

  • 正しいバージョンを実行します。64ビットシステムには、このユーティリティの64ビットバージョンと32ビットバージョンの両方があります。使用する必要のある32ビットバージョンは、SysWOW64フォルダーにあります。

  • 管理者特権のコマンドプロンプトから実行します。開始する簡単な方法は<Winkey>cmd.exe<Ctrl-Shift-Enter>、UACプロンプトを入力して承認するか、必要に応じて肩越しの管理者資格情報を提供することです。

成功するために知って対処する必要のあることは他にもたくさんあります。それらを無視した場合、それらのほとんどは、プログラムがインストールされて実行された後にのみ明らかになります。それらの多くは、ファイルシステムの仮想化に由来します。

于 2012-08-20T05:58:05.990 に答える