トップ回答者
レジストリ登録できるファイルとできないファイル

質問
-
コマンドプロンプトを管理者として実行し、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ファイルであることを確認し、もう一度やり直してください。
というエラーダイアログがでます。
こういうファイルは登録できるが、こういうファイルはダメだ、という法則が知りたいのですが
お分かりの方がいらっしゃいましたら、ご回答のほうよろしくお願いします。
回答
-
Ptan3 さんからの引用 こういうファイルは登録できるが、こういうファイルはダメだ、という法則が知りたいのですが
お分かりの方がいらっしゃいましたら、ご回答のほうよろしくお願いします。
そもそも DLL の作りが違います。
regsvr32.exe は COM の登録用 command なので、対象の DLL が COM として扱えるように作成されている必要があります。
実際に試す前に知りたいということであれば、Windows SDK に同梱されている Dependency Walker 使って DllRegisterServer function が実装されているか調査できますね。なお、msxml.dll が依存する DLL もこちらで調査できます。
なお、Dependency Walker を動作させるためには MFC の runtime が必要です。こちらは必要ありません。必要なのは guidgen.exe でした。
すべての返信
-
Ptan3 さんからの引用 こういうファイルは登録できるが、こういうファイルはダメだ、という法則が知りたいのですが
お分かりの方がいらっしゃいましたら、ご回答のほうよろしくお願いします。
そもそも DLL の作りが違います。
regsvr32.exe は COM の登録用 command なので、対象の DLL が COM として扱えるように作成されている必要があります。
実際に試す前に知りたいということであれば、Windows SDK に同梱されている Dependency Walker 使って DllRegisterServer function が実装されているか調査できますね。なお、msxml.dll が依存する DLL もこちらで調査できます。
なお、Dependency Walker を動作させるためには MFC の runtime が必要です。こちらは必要ありません。必要なのは guidgen.exe でした。
-
こんにちは!
フォーラム オペレータの鈴木裕子です
ちゃっぴ
さん、回答ありがとうございました!Ptan3 さん、フォーラムのご利用ありがとうございます。
疑問は解消されましたでしょうか?
ちゃっぴ さんの回答が、有用な情報と思われましたので、
私のほうで回答済みチェックをつけさせていただきました。
回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
有用な情報と思われる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてくださいねPtan3 さんはチェックを解除することもできますので、
もし不適切でしたら、修正をお願いします。
また、引き続き疑問や質問がありましたら、遠慮なく投稿してくださいね。
それでは!