[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/05/30(Wed) 19:54
投稿者名:Edward
Eメール:
URL :
タイトル:
参照設定から消したい
自作DLLのインターフェースが変わる更新をしたのですが。
コンパイル時に互換性が無くなりますと言うダイアログが出て
[キャンセル]or[継承]と言うダイアログが出た時に[継承]をクリック
してしまったせいでしょうか?定かでは有りませんが。

C:\Program Files\ComPlus Applicationsフォルダに有った同名のDLLが
レジストリ登録されVB6の参照設定ダイアログにも表示されるようになって
しまってい、これが消せません。
当時のDLLでregsvr32 /uしても消えません。

以後C:\Program Files\ComPlus Applicationsのレジストリ情報(昔の
インターフェース)が優先されるようで、自作DLLの更新が出来なくなって
しまいました。

どうすれば、参照設定ダイアログから消せますでしょうか?

投稿時間:2007/05/30(Wed) 20:16
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: 参照設定から消したい
> どうすれば、参照設定ダイアログから消せますでしょうか?

手動で、レジストリ項目を削除する必要があるでしょうね。
下記が参考になるかも知れません。
http://support.microsoft.com/kb/183771/ja

投稿時間:2007/05/31(Thu) 08:06
投稿者名:Edward
Eメール:
URL :
タイトル:
Re^2: 参照設定から消したい
魔界の仮面弁士 様 情報有難う御座います

> > どうすれば、参照設定ダイアログから消せますでしょうか?
>
> 手動で、レジストリ項目を削除する必要があるでしょうね。
> 下記が参考になるかも知れません。
> http://support.microsoft.com/kb/183771/ja

サポートページ見ましたが複雑な作業ですね、レジストリ削除は怖いものですしね。
簡単に削除出来るツールなど無いですかね。
何方か御存知の方居ましたら、情報下さい。

投稿時間:2007/05/31(Thu) 09:12
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: 参照設定から消したい
> サポートページ見ましたが複雑な作業ですね、レジストリ削除は怖いものですしね。
ゆえに、バックアップしておきましょう、と。

> 簡単に削除出来るツールなど無いですかね。
以前、Visual Basic Magazine 誌(2000/12月号)に、参照設定項目を消すための
レジストリ クリーナ ツールなソースコードが掲載された事がありましたが
(こだわり コンポーネント工房)、削除対象となる内容は、先の URL にて
示された項目(の一部)でしたので、手動でも同じことかと思いますよ。

それよりもまずは、
>>> 定かでは有りませんが。
という曖昧な点を何とかする必要があるような気がします。

もし、バージョン互換性を破棄してよいのであれば、関連項目をすべて抹消した後、
新たに互換性なしとしてコンパイルしなおすだけで済みますが、互換性を保ちたいのであれば、
まず、クラスの継承関係がどうなっているかを、OLEVIEW.EXE やレジストリ項目などから
調査するのが先決かと。

投稿時間:2007/05/31(Thu) 14:51
投稿者名:Edward
Eメール:
URL :
タイトル:
Re^4: 参照設定から消したい
未だ、解決は出来ていないのですが。あぁぁぁぁーーー

> ゆえに、バックアップしておきましょう、と。
皆さんは、レジストリ情報のバックアップってどのように行っていますか?

投稿時間:2007/05/31(Thu) 16:25
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^5: 参照設定から消したい
> 未だ、解決は出来ていないのですが。あぁぁぁぁーーー
実際の環境を調査して、詳細を調べてみないことには、
単純に前の情報を消してよいのかどうかわかりませんしね…。

参考までに書いておくと、通常、ActiveX DLL が登録されると、プログラムID をキーにした
 HKCR\プロジェクト名.クラス名\
というエントリが作られます。この下には CLSID というキーがあるはずです。

その CLSID キーには、クラスのID が書かれているので、それを元に、
 HKCR\CLSID\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
が参照されます。ここには、DLL のパスなどの詳細情報があります。

ちなみに、参照設定画面に表示されるライブラリの説明文は、そのキーにある
TypeLib というサブキーの値を用いて、
 HKCR\TypeLib\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
を開くと、"1.0" などといった タイプ ライブラリ バージョンのキーに書かれています。

で、これらを削除してしまえば、参照設定の一覧にも出なくなるだろう、と。


さらに言えば、上記の他にも、HKCR\Interface というエントリが追加されるのですが、
ここのエントリは残しておいても、参照設定画面には表示されないので、放置でも可です。
もちろん、余裕があればこちらも消しておいた方が良いですが。


> > ゆえに、バックアップしておきましょう、と。
> 皆さんは、レジストリ情報のバックアップってどのように行っていますか?

今回の場合でいえば、これから消すキーをエクスポートしておけば良いのかな、と。

あるいは、こういう方法もありますね。
http://www.forest.impress.co.jp/article/2002/06/10/ijikururegistry03.html
http://www.forest.impress.co.jp/article/2002/06/13/ijikururegistry04.html

投稿時間:2007/06/04(Mon) 18:00
投稿者名:Edward
Eメール:
URL :
タイトル:
Re^6: 参照設定から消したい
魔界の仮面弁士様 いつも御指導有難う御座います。

幾つかレジストリ情報を削除しましたが。最後で行き詰まっています。

以下の様なレジストリ情報が有ります(名称は本来どちらも「DB操作」なのですがregeditで編集しました)
AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA
14.1DB操作A
  0
   win32C:\Program Files\COMPlus Applications\{00000000-0000-0000-0000-000000000000}\DBControl.dll
  FLAGS0
  HELPDIRC:\Program Files\COMPlus Applications\{00000000-0000-0000-0000-000000000000}

b.0DB操作B
  0
   win32D:\DEV\prj\dll\DBControl.dll
  FLAGS0
  HELPDIRD:\DEV\prj\dll

現在.vbpファイルの記述は
Reference=*\G{AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA}#14.0#0#dll\DBControl.dll#IWF DB操作
以前正常に動作していた頃の記述
Reference=*\G{AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA}#6.0#0#dll\DBControl.dll#IWF DB操作

よって、当時のレジストリは以下の様な感じだったのではと想像されますが。
AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA
6.0IWF DB操作
  0
   win32D:\DEV\prj\dll\DBControl.dll
  FLAGS0
  HELPDIRD:\DEV\prj\dll

レジストリのパス情報が期待道理であると言う事から、以下の様に編集してから
Reference=*\G{AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA}#b.0#0#dll\DBControl.dll#IWF DB操作

VSを起動してみて参照設定ダイアログを開いてみると
C:\Program Files\COMPlus Applications\{BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB}\DBControl.dll
の方が参照されています。VSを閉じてから.vbpファイルを見てみると14.0に書き換えられてしまっています。

タイプライブラリに複数のバージョンが列挙されている場合って、どういう意味だか御存知の方御指導下さい。
よろしくお願いいたします。

投稿時間:2007/06/04(Mon) 18:39
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^7: 参照設定から消したい
> VSを閉じてから.vbpファイルを見てみると14.0に書き換えられてしまっています。

参照設定している DLL (タイプライブラリ)を、OLEVIEW.EXE でチェックしてみてください。
そのライブラリは、(6.0 を継承して実装された) 14.0 というバージョンになっていませんか?