• ベストアンサー

オブジェクト(dll)のレジストリ登録について

いつもお世話になっております。 dllの使い方について教えてください。 vb5.0で開発を進めているのですが、 dllを呼び出す際に、レジストリ登録を しなければいけないのでしょうか? いくつかのサイトでは、参照設定際すれば、 実行できているようです。。 実行環境では、レジストリ登録しないと 動かない場合があるということでしょうか? ご教授、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

何のDLLか、によるが。 ・あなたがVB5.0で作成したDLLを、開発に使ったマシン以外で使う。 →該当するマシンでレジストリに登録する必要があります。 ・あなたがVB5.0で開発を行うにあたり使用するDLLを開発に使ったマシン以外で使う。 →VB5.0で参照設定できるのであれば、それと同じ方法で該当するマシンにDLLをインストールすれば同様にレジストリに登録済みとなる事でしょう。 よくわかんなければ次のようにしてみれば良いだろう。コマンドプロンプトを開いて C:\>regsvr32 hogehoge.dll これで「Successful」と出ればActiveX DLLだ。エントリポイントが見つかりません云々と言われたらそれはWin32ネイティブDLLという事。登録に失敗して環境を壊すという事はないのでとりあえず登録を試みてみれば良いのではないかな。 現在では大きく分けてDLLは3つある。 ・Win32ネイティブDLL:レジストリ登録不要。パスの通った所に配置する。 ・ActiveX DLL:レジストリ情報によって呼び出すDLL。レジストリに登録する。インプロセスCOMサーバと言っても差し支えないかもしれないがあるかもしれない。 ・Microsoft .Net アセンブリ:レジストリの登録は不要。単純に実行ファイルと同じパスに配置するか、.Netにおけるレジストリといえるグローバルアセンブリキャッシュに登録する。

kensiroooo
質問者

お礼

返信送れて申し訳ありません。 dllにもいろいろな種類があるのですね。。 初めて知りました。面目ないです。。 勉強になりました。 ありがとうございました。

関連するQ&A

  • DLLの登録をVBで行いたい(VB2005)

    いつもお世話になっております。 VB2005で開発しています。 DLLを登録するときに、コマンドプロンプトから regsrv32 ファイル名.dll と実行すると思います。 これをVBから行いたいのですが、何か良い方法はございませんか? 具体的には、VBでレジストリ登録するファイルの一覧を出力して、 それをレジストリ登録したいのです。 VBとバッチを組み合わせれば、実現可能なのですが、 ファイルを2つに分けたくないので、VBだけで処理できないものかと 思いました。 コマンドプロンプトで実行するコマンドをVBから同じように実行できれば良いのですが・・・ もしよろしければ、ご教示ください。 よろしくお願い致します。

  • レジストリ登録なしにDLLからオブジェクト生成

    下記URLにあるような、 レジストリ登録なしにDLLからオブジェクト生成できるDLLの作成を模索しております。 http://na-s.jp/NOM/NOM_1.1.2.0_Readme.html 使用方法としてはAccessなどのVBAが自作DLLを呼び出すというものなのですが 自作DLLを作るたびにRegAsmを管理者権限で稼働台数分実行せねばならず しかも自作DLL作成者には管理者権限は与えられていないため、 非常に不便なことになると予想しています。 そこで上記URLにあるようなDLLを1度RegAsmしておくだけで、後に続く自作DLLは そのDLLを介して実行できるものを作りたいと考えています。 いろいろ調べたのですが、調べ方が悪いのか具体例がヒットせず ここで質問したしだいです。 1.希望開発環境であるVS2010以降 C#で作成は可能か (C#以外でないと作成できないのであれば何で作成できるか) 2.プログラム具体例 以上、何卒知恵をお貸しください。 よろしくお願いいたします。

  • レジストリ登録について

    教えてほしいことがあります。 VBで作成したOCXのレジストリ登録についてです。 Regsvr32を使用せずに、 そのOCXを貼り付けたEXEを起動することで、 レジストリ登録が出来ているようなんですが、 これって正攻法なんでしょうか。 そういうものなんでしょうか。 98のPCではレジストリ登録を行わないとExeの実行はできませんでした。ですが、XPとVistaではできるようなんです。 Vistaの場合レジストリ登録が結構大変なので、Exeを起動することで対応させようかと思っております。 何かご存知の方、いらっしゃいましたら是非ご教授ください。 よろしくお願い致します。

  • dllファイルをレジストリ登録できない

    Windows Vistaを使っています。 あるdllファイルがありまして、 そのファイルをレジストリ登録したいと思っております。 Windows XPでは正しくレジストリ登録できたdllのファイルなのですが、 Vistaで実行するとエラーとなってしまいます。 Vistaでの実効手順は以下の通りです。 (1)C:\WINDOWS\system32\cmd.exeを管理者権限で実行 (2)regsvr32 ~~.dllを実行 (2)を実行すると添付ファイルのメッセージが表示されてしまいます。 私なりに調べてみまして、 (1)を管理者権限で実行すること。 (2)でdllファイルをフルパスで指定して実行すること。 の2点は試しましたが、結果は同じでした。 何かほかに考えられることはございませんか? 解決できそうな案を、ご提示いただければ、私が確かめます。 ぜひご教示お願いいたします。

  • VB6.0exeから.NETのDLLを呼び出した場合の実行時エラー’429’について

    お世話になります。 環境はWindowsXPです。 現在、VB6.0のexeから.NETのDLLを使用する・・・というのをしています。 以下の手順を踏み、実行してみたのですがどうも上手く行きません。。。 (1).NETのDLLを作成 (2)COMとして利用するために、.NET 2003コマンドプロンプトから「regasm」コマンドにてレジストリに登録 (3)tlbexpコマンドで、タイプライブラリを作成 (4)VB6のプロジェクトから(3)を参照設定する (5)VB6から.NETクラスを生成し、呼び出す (6)プロジェクトをコンパイルし、exeを生成 この手順にて実行すると「実行時エラー'429'ACtiveXコンポーネントはオブジェクトを作成できません」という エラーメッセージが出てしまいます。 windows updateをしてみたり、VB6.0のランタイムをインストールしてみたりしたのですが、 どうもダメみたいで困っています。 解決方法などご存知の方がいらっしゃいましたら、 ご教授いただけると大変助かります。 よろしくお願いいたします。

  • OCXのレジストリ登録

    BCB5にて、OCXを作成しました。 開発環境では、もちろんレジストリ登録して(ツールがやってくれるんです)動作しています。 でも、他環境にそのOCXと関連DLL(と思われる)をインストールして、 REGSVR32 TARGET.OCX としても、エラーが出て登録できません。 エラーダイアログには、「Load Library(”Target.ocx”)failed. GetLastError returns 0x00000485」 と表示されます。これは、どんなエラーなのでしょうか? 関連DLLをインストールしたといいましたが、実はあんまり自信がありません。必要なDLLとは、どのようにしたら確実に判るものなのでしょうか? よろしくお願いします。

  • regsvr32.exe による DLLの登録について

    質問は2つあります。以下、よろしくお願いします。 1.通常DLLはレジストリに登録しなくても使用できますが、どういう場合に登録が必要なのでしょうか? 2.regsvr32 xxx.dll を実行したところ、以下のようなエラーとなってしまいました。正しく登録するにはどうしたらいいのでしょうか? xxx.dll は読み込まれましたが、DllRegisterServer エントリポイントが見つかりませんでした。このファイルが登録されていない可能性があります。 以上、よろしくお願いいたします。

  • DLLのライセンス

    VisualStudiの開発環境で参照の追加から c:\windows\system32\hnetcfg.dll を指定したところ、プロジェクトの出力フォルダに Interop.NATUPNPLib.dll, Interop.NETCONLib.dll, Interop.NetFwTypeLib.dll ができました。実行ファイルと、これらのDLLファイルが一緒になって動作するようです。 そこで、実行ファイルとこれらのファイルを一緒に配布しようと思うのですが、 【1】これらのファイルを配布することはライセンス上問題ないのでしょうか?(hnetcfg.dllはWindowsXPに標準で入っているdllだと思います)あるいは、ライセンスについてどこを見れば/どこに問い合わせればよいのでしょうか? 【2】もし、ライセンス上問題がある場合、c:\windows\system32\hnetcfg.dllを実行ファイルが参照すればよいと思うのですが、それを参照するように設定することは可能でしょうか? 一般に.NetではこのようなDLLが実行ファイルと一緒のフォルダに置かれると思うのですがそれらのライセンスも同じだと思うのですが、どのようになっているのでしょうか? いろいろわからないことだらけです。よろしくお願いします。

  • VBから参照できないCのDLLを使用する方法

    Cで作成されたDLLがあるのですが、VBから参照設定しても「指定されたファイルへの参照は登録できません。」と怒られます。 そのようなDLLをどうしてもVBから使用したい場合はどうすれば良いでしょうか? 直接は無理だとしても、間に何かをかましてできると思うのですが、良い方法があれば教えてください。 ちなみに VB6 です。 よろしくお願いします。

  • VBからパス切り替えて同名のをActiveXDLLをコールしたいです

    よろしくお願いいたします。 実行環境としてwin2000でVB6でプログラムの本体と DLL(ActiveXDLL)を作成しております。 その際、開発環境と商用環境のDLLが同名であり、 実行プログラム(メイン.exe)から iniファイルなどを使って → c:\開発環境\aaa.dll → c:\商用環境\aaa.dll を選択するようにしたいのですが、 このようなことは、可能なのでしょうか? 2日くらい調べてみたのですが、探せませんでした。 また、VBAでは、「References」を使用すると 参照設定先を動的に変更することが できるようなのですが、VBでも可能なのでしょうか? ※References.AddFromFile("c:\開発環境\aaa.dll") ↑このまま、記述してみたらReferencesが定義されていないといわれました。;;

専門家に質問してみよう