locked
レジストリ登録できるファイルとできないファイル RRS feed

  • 質問

  • コマンドプロンプトを管理者として実行し、regsvr32を使ってレジストリ登録を行おうとすると

    あるファイルは正常に登録できるが、あるファイルは登録できない

    ということが起こります。

    この原因は何でしょうか?

     

    例えば・・・

     msxml.dllを登録しようとすると

     

      モジュール"msxml.dll"の読み込みに失敗しました。

      

      バイナリが指定されたパスに格納されていることを確認するか、

      バイナリまたは依存.DLLファイルに問題がないかを調べてください。

      

      ダイナミックリンクライブラリ(DLL)初期化ルーチンの実行に失敗しました

     

     というエラーダイアログが出てきてしまいます。

     msxml3.dllは同じ作業を行っても正常に登録できます。

     ちなみに、msxml.dllはWindows\system32フォルダに存在しています。

     

    他にもレジストリ登録できないファイルがたくさんあります。

    asycfilt.dllやMSWINSOCK.dllなどなど

     

     asycfilt.dllの場合は

     

      モジュール""asycfilt.dll"は読み込まれましたが、DllRegisterServerエントリポイントが見つかりませんでした。

      "asycfilt.dll"が有効なDLLファイルまたはOCXファイルであることを確認し、もう一度やり直してください。

     

     というエラーダイアログがでます。

     

    こういうファイルは登録できるが、こういうファイルはダメだ、という法則が知りたいのですが

    お分かりの方がいらっしゃいましたら、ご回答のほうよろしくお願いします。

    2008年3月7日 1:08

回答

  •  Ptan3 さんからの引用

    こういうファイルは登録できるが、こういうファイルはダメだ、という法則が知りたいのですが

    お分かりの方がいらっしゃいましたら、ご回答のほうよろしくお願いします。

     

    そもそも DLL の作りが違います。

     

    regsvr32.exe は COM の登録用 command なので、対象の DLL が COM として扱えるように作成されている必要があります。

     

    実際に試す前に知りたいということであれば、Windows SDK に同梱されている Dependency Walker 使って DllRegisterServer function が実装されているか調査できますね。なお、msxml.dll が依存する DLL もこちらで調査できます。

     

    なお、Dependency Walker を動作させるためには MFC の runtime が必要です。

    こちらは必要ありません。必要なのは guidgen.exe でした。

    2008年3月7日 16:41

すべての返信

  •  Ptan3 さんからの引用

    こういうファイルは登録できるが、こういうファイルはダメだ、という法則が知りたいのですが

    お分かりの方がいらっしゃいましたら、ご回答のほうよろしくお願いします。

     

    そもそも DLL の作りが違います。

     

    regsvr32.exe は COM の登録用 command なので、対象の DLL が COM として扱えるように作成されている必要があります。

     

    実際に試す前に知りたいということであれば、Windows SDK に同梱されている Dependency Walker 使って DllRegisterServer function が実装されているか調査できますね。なお、msxml.dll が依存する DLL もこちらで調査できます。

     

    なお、Dependency Walker を動作させるためには MFC の runtime が必要です。

    こちらは必要ありません。必要なのは guidgen.exe でした。

    2008年3月7日 16:41
  • こんにちは!
    フォーラム オペレータの鈴木裕子です

     

    ちゃっぴ さん、回答ありがとうございました!

     

    Ptan3 さん、フォーラムのご利用ありがとうございます。

    疑問は解消されましたでしょうか?

     

    ちゃっぴ さんの回答が、有用な情報と思われましたので、

    私のほうで回答済みチェックをつけさせていただきました。

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    有用な情報と思われる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてくださいね

     

    Ptan3 さんはチェックを解除することもできますので、

    もし不適切でしたら、修正をお願いします。

    また、引き続き疑問や質問がありましたら、遠慮なく投稿してくださいね。

     

    それでは!

    2008年3月17日 1:14