- - PR -
【ASP.NET+IIS】VB6.0のACTIVEX DLLの使用について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-02-25 18:19
はじめまして、以下のエラーが発生して困っております。
CLSID {****-****-****-****-****} を含むコンポーネントの COM クラス ファクトリを 取得中に、次のエラーが発生しました: 80040154。 環境は以下です。 WINDOWS SERVER 2003 SP2 64bit版 VS2005 ASP.NET2.0 + IIS6.0 VB6.0 SP6(DLL) 作業内容としては、 @Regsvr32(64bit)でDLLを登録後にCOMオブジェクトとして参照設定に追加 ADCOMの設定で上記エラーとなっているCLSIDのアクセス許可を追加(IUSER・IWAM・ NETWORK SERVICE・ASPNET) Bプログラム記述-DLLで定義されているクラスのインスタンス作成 ※実行するとエラ-発生 ちなみに上記プログラムは、.NET標準の開発サーバーでは問題なく動作しています。 そのため、IISのアクセス権の問題と思い、DCOMやらRegeditで検索しアクセス権を付加してみましたが、ダメでした。 いろいろ調べてはいるのですが、解決の糸口が見つかりません・・・。 どうか宜しくお願いします。 |
|
投稿日時: 2008-02-25 19:57
DCOM の設定で、対話ユーザーにしてみるとか。ログオンもしとかなあかんけど。
それでいけるなら、実行ユーザーを偽装する。 |
|
投稿日時: 2008-02-25 20:13
んー。VB 6.0 は x64 に対応していましたっけ?そして、IIS のワーカープロセスは恐らく x64 で動いていますよね。
プロセス内で x86 と x64 コードは共存できませんので、x64 で動く IIS(のワーカープロセス) と ASP.NET から x86 として登録している VB6 DLL が見えていないみたいな感じなのではないでしょうか。 解決策として思いつくのは、ワーカープロセスにプロセッサアーキテクチャとか WOW64 とかそんなの設定できそうな気がします。これとかこれかな? あるいは VB 6.0 DLL をアウトプロセスにしてしまう方法とかが思いつきます。 # regsvr32(64bit) とか書いてあるので勘違いだったらごめんなさい |
|
投稿日時: 2008-02-26 18:31
Jitta様 ya様 返信ありがとうございました。
解決できました。 おっしゃる通り、64bitのIISのワーカープロセスでは、32bitのアプリケーションは動作できないようです。 32bitのIIS上でASP.NET + DLLを実行させたところ、エラーがなくなり処理することができました。 64bitのOSで32bitのIISを使用するということで、多少気にはなりますが、動作できる環境が作れてホッとしています。ありがとうございました。 |
1