Dllを登録する方法は知っていますが、なぜそれを行っているのか、dllをどのような条件で登録しなければならないのか、私には本当にわかりません。誰かが私にいくつかのドキュメントを説明したり、指摘したりできますか?
DLLが登録されると、DLLのDllRegisterServer
メソッドエントリポイントが呼び出されます。同様に、DllUnregisterServer
が呼び出されますDLLが未登録の場合。
このMSDN記事 で説明されているとおり:
このサーバーモジュールでサポートされるすべてのクラスのレジストリエントリを作成するようにインプロセスサーバーに指示します。この関数が失敗した場合、すべてのクラスのレジストリの状態は不確定です。
COM DLLの場合、必要に応じて登録/登録解除を行う独自のDllRegisterServer
およびDllUnregisterServer
エントリポイントメソッドを実装する必要があります。 DllRegisterServer
のサンプルコードは here にあります。
DLLの登録の最終結果は、DLLのコンポーネントのCLSIDがすべてHKEY_CLASSES_ROOT\CLSID
。これにより、別のDLLまたはアプリケーション)からCOMオブジェクトをインスタンス化するときに、CoCreateInstance
が正しいサーバーを見つけることができます。
DllUnregisterServer
は逆の処理を行い、DllRegisterServer
によってそこに置かれたレジストリからすべてのCLSIDを削除します。
DllRegisterServer
に関するより一般的な情報は here にあります。
DLL登録と呼ばれるものは、COMオブジェクトを実装するときです。regsvr32は、オブジェクトのインスタンスを作成できるようにします。たとえば、VBScriptがNewまたはCreateObject()を使用する場合、名前またはCLSIDを問わず、COMが新しいインスタンスを作成するためにロードするものをDLLを知っていることを確認します。
(非常に)簡単な要約については、 "素人の説明" をご覧ください。
Regsvr32.exeのソースコードを参照してください。