掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ActiveXの登録情報について (ID:103263)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> System32にあるOCXのファイルはもともとOSにあるものですよね? OS 付属のファイルの場合もあれば、アプリケーション製品によって 導入されるものもありますね。 > すでにレジストリにも登録済みという認識でいます。 登録済みの可能性が高いですが、その保証はありません。 たとえばインストールとアンインストールを繰り返した場合、 何らかの理由で、レジストリとの整合性が合わなくなることはあります。 > 以前、あるOcxがないというエラーになって、再登録(Regsvr32)したら解決できたことがありました。 > これは、Ocxファイル自体はあるけどレジストリに登録されていないから出てしまったエラーになるのですか? 恐らくそうだと思います。 > またSystem32からOcxファイル自体をなくしても同様にエラーが出るかと思います。 OCX の置き場所は System32 とは限りません。 たとえば、Common Files や Program Files の配下に置かれる事もあります。 レジストリ等で場所が正しく指定されてさえいれば、それこそ CD-ROM 上などのパスであっても動作します。たとえば、複数のフォルダーに 同じファイルの異なるバージョンが置かれており、どのファイルが使われるかは レジストリやマニフェストで指定されている…という場合もあります。 > じゃあアプリ自体はレジストリもSystem32の中も参照しているということですか? > どのような手順で参照しているのかいまいち仕組みが分かりません。 > 簡単な説明いただけると助かります。 具体的な例を挙げれば、たとえばレジストリの HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{F9043C88-F6F2-101A-A3C9-08002B2F49FB} HKEY_CLASSES_ROOT\CLSID\{F9043C85-F6F2-101A-A3C9-08002B2F49FB} に書かれた内容が参照されることになります。 上記の「{F9043C85-F6F2-101A-A3C9-08002B2F49FB}」というのは、 コモンダイアログ コントロール(COMDLG32.OCX)の識別子(GUID)であり、そこに 実際の COMDLG32.OCX へのパス(C:\Windows\System32\comdlg32.ocx など)が 記載されています。 あとはそのパスを基に、実際のファイルがロードされる……という仕組みです。 実際には上記の他、 HKEY_CLASSES_ROOT\MSComDlg.CommonDialog HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MSComDlg.CommonDialog HKEY_CLASSES_ROOT\Licenses\4D553650-6ABE-11cf-8ADB-00AA00C00905 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Licenses\4D553650-6ABE-11cf-8ADB-00AA00C00905 HKEY_CURRENT_USER\Software\Classes\TYPELIB\{F9043C88-F6F2-101A-A3C9-08002B2F49FB} などなど、各種情報があるのですが、今回は細かい説明は省きます。 http://support.microsoft.com/kb/183771/ja なお、呼び出し元が EXE の場合には、SxS (サイドバイサイド) という 仕組みを使う事で、レジストリ登録無しで動作させることもできます。 http://msdn.microsoft.com/ja-jp/library/cc482775.aspx http://msdn.microsoft.com/ja-jp/library/ms811700.aspx http://support.microsoft.com/kb/828629/ja
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.