はじめまして。しおと申します。
VBにさわりはじめたばかりの初心者なのですが、
教えていただけますでしょうか。
ActiveXDllやActiveXExeを作成すると、自動的に参照設定に
追加されているようなのですが、これはレジストリに登録されている、
と考えていいのでしょうか。
また、regsvr32 /u コマンドを使用してレジストリ削除を
行おうとしているのですが、消えてくれません。
現在、"Project1"という参照設定がかなりの数になってしまい、
困惑しています…
どなたか、ご教授していただけませんでしょうか
よろしくお願いします。
Visual Basic で dll の作成を行うと
自動的にその dll はレジストリに登録されてしまいます。
それ以降、参照設定の一覧にもその dll が表示されるようになります。
regsrv で削除を行うには、その dll 自体が存在しないとできません。
dll を作成後、レジストリから削除する前に
その dll ファイルを削除してしまった場合には、
regsrv でレジストリから削除するのは不可能です。
直接 regedit でレジストリを開いて削除する
(※レジストリについてあまり知らない場合は危険!)か、あるいは
レジストリの整理をしてくれるようなツールを使いましょう。
> ActiveXDllやActiveXExeを作成すると、自動的に参照設定に
> 追加されているようなのですが、これはレジストリに登録されている、
> と考えていいのでしょうか。
コンパイル時に登録されます。
> また、regsvr32 /u コマンドを使用してレジストリ削除を
> 行おうとしているのですが、消えてくれません。
「REGSVR32 /U C:\Project1.DLL」は、ActiveX DLLの場合に使います。
ActiveX EXEの場合は、「C:\Project1.EXE /Unregserver」です。
これらのコマンドでは、DLL/EXE内に含まれているGUID情報をもとにして
レジストリ項目の抹消が行われます。そのため、元のファイル
(Project1.DLL とか Project1.EXE とか)が実在していないと、
削除する事は出来ません。
早速の回答、ありがとうございます!
>regsrv で削除を行うには、その dll 自体が存在しないとできません。
…そうなんですか。
それならば、逆に考えると、Dllが存在しているときに
regsrv で削除を行うと、参照設定の"Project1"は消えてくれる、
ということですか?(質問ばかりで申し訳ありません。)
>直接 regedit でレジストリを開いて削除する
↑これは、私にはかなり敷居が高すぎます。
もう少し勉強してからにしたいと思います。
魔界の仮面弁士様、回答ありがとうございます!
>ActiveX EXEの場合は、「C:\Project1.EXE /Unregserver」です。
…知りませんでした。
Dllも、Exeも、同じやり方でやってしまっていました。
お二方のお話ですと、
①削除するDll・Exeが存在すること
②regsrv /u・Unregserverを使い分けること
で、削除ができるようですね!
わかりやすい説明、大変ありがとうございました!!