- PR -

【ASP.NET+IIS】VB6.0のACTIVEX DLLの使用について

1
投稿者投稿内容
アコ
会議室デビュー日: 2008/02/25
投稿数: 2
投稿日時: 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で検索しアクセス権を付加してみましたが、ダメでした。

いろいろ調べてはいるのですが、解決の糸口が見つかりません・・・。
どうか宜しくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-02-25 19:57
DCOM の設定で、対話ユーザーにしてみるとか。ログオンもしとかなあかんけど。

それでいけるなら、実行ユーザーを偽装する。
ya
大ベテラン
会議室デビュー日: 2002/05/03
投稿数: 212
投稿日時: 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/25
投稿数: 2
投稿日時: 2008-02-26 18:31
Jitta様 ya様 返信ありがとうございました。
解決できました。

おっしゃる通り、64bitのIISのワーカープロセスでは、32bitのアプリケーションは動作できないようです。

32bitのIIS上でASP.NET + DLLを実行させたところ、エラーがなくなり処理することができました。
64bitのOSで32bitのIISを使用するということで、多少気にはなりますが、動作できる環境が作れてホッとしています。ありがとうございました。


1

スキルアップ/キャリアアップ(JOB@IT)