• 締切済み

Vista64bitとVS2005における、MsScriptのCLSI

Vista64bitとVS2005における、MsScriptのCLSIDの違いについて。 【動作環境】 ・Windows Vista 64bit ・VS2005 sp2 ・IIS7 ・Oracle 11g 以上の環境で、.NETの自社パッケージソフトの運用テストを行っています(32bit→64bitへの移行対策です) その中で、「MsScriptControl.ScriptControl」という参照設定を行っているのですが、ビルドは成功するのに、実際にWEBで運用するとこのdllを使用する際に参照エラーになってしまいます。 調べてみた所、レジストリ内で 「MsScriptControl.ScriptControl」のCLSIDは「0E59F1D5-…」なのに対し、実際に「C:\Program Files\Microsoft Script Control\msscript.ocx」が入っている場所のTypeLibのCLSIDは、「0E59F1D2-…」となっており、一文字だけ違っています。 このためだと思うのですが、WEBを実行中にMsScriptを呼び出そうとすると、 エラーが起きました(CLSID {0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC} を含むコンポーネントの COM クラス ファクトリを取得中に、次のエラーが発生しました: 80040154。) というエラーが起きてしまいます。 何故、同じファイルを参照しているはずなのにCLSIDがレジストリ内で違ってしまっているのか、調べているのですが情報が少なくて行き詰っております。 VS2005のコンパイル自体はAny CPUで行っておりますので、MsScript自体が32bitであることは問題ありません。 どうか、ご助力いただけたらと思います。 どうぞ、よろしくお願いします。

みんなの回答

  • WebSurfer
  • ベストアンサー率55% (33/59)
回答No.1
tuma935
質問者

お礼

ご回答ありがとうございました。 その後、一応?現段階での解決策が取れましたので、ご報告させていただきます。 まず、VS2005でのビルドですが、「構成マネージャ」の「アクティブソリューションプラットフォーム」の設定は、ご指摘の通りx86にしなければなりませんでした。 その上で、各プロジェクトのプラットフォームは「Any CPU」と設定します。 今回作成しているプロジェクトではASP.NETを使用しているため、「アクティブソリューション構成」は、「Debug with ODP.NET」となります。 Webプロジェクトファイルのプラットフォームは「.NET」となります。 この上で、「MsScriptControl.ScriptControl」という32bitのMS提供のdllを動かす為には、IISでの設定が必要になります。 私の環境ではIIS7.0となりますが、.NETプロジェクトが所属しているアプリケーションプールを選択し、「アプリケーションプールの規定値の設定」を開き、「32ビットアプリケーションの有効化」を「True」とします。 そして、Oracleも32bitのものに変更します。 Oracle11gには32bit版が配布されておりますので、2.111.6.0の32bit版をインストールしてそのOracle.DataAccess.dllを参照し、VS2005sp2でビルドを行います。 詳しい解説は、上記でご教授いただいたページと、以下のURLに詳しいと思いますので、 もしこの質問に検索でたどり着いた方は参照にされるとよいかと思います。 http://blogs.msdn.com/nakama/archive/2008/11/13/part-3-asp-net-2-0-web-64.aspx 結局は、64bitOSの環境上ではありますが、64bit版内にあるエミュレーターを使って32bit版のプロジェクトを動かしている、という結果となりました。 以上になります。 ご助力、ありがとうございました。

関連するQ&A