- ベストアンサー
ActiveX → VB を起動するとCreateObjectできない。
初めまして。 2003Server+IIS6.0の環境でASP内のActiveXからShell関数でvbのexeを実行させる処理を作成しております。 サーバーから直接exeを実行させると正常に動くのですが、Web上からasp→ActiveX→exeを起動させるとテキストに書き込む処理はできるのですが、「CreateObject」文で「ActiveX コンポーネントはオブジェクトを作成できません」というエラーが返ります。 VB内でなぜ「CreateObject」が出来ないのかご存知の方はいますでしょうか。 宜しくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Ano.2さんが回答されていますが、アクセス権がないんじゃないかとおもいます。 IISの場合、 ASP自身(IIS自身)のアカウントとしてIWAS_マシン名 ASPを見るインターネットゲストアカウントとして IUSR_マシン名 の二つがあります。 デフォルトでは IWAS_マシン名のアカウントはサービスユーザとして、 IUSR_マシン名のアカウントはGuestユーザとして のアクセス権が与えられます。 IUSR_マシン名 のユーザに適当なフォルダアクセス権や実行権を与えてあげれば、動作すると思います。
その他の回答 (2)
- khazad-lefty
- ベストアンサー率44% (296/668)
実行権限では? 公開されていないのであれば ASPの実行ユーザー(IUSR?)に管理者権限を一時的に付与したら動きそうな…。
- temtecomai2
- ベストアンサー率61% (656/1071)
ここで言っておられる ActiveX と Shell関数と "vbのexe" の関係がよくわかりません。 「何が何をどうしようとしたが、どこでどんなエラーが出てしまうのか」 > サーバーから直接exeを実行させると正常に動く ということから、 何らかのユーザーでサーバーにログインして対象の exe ファイルを実行する事はできる。 という事だけは読み取れます。 しかし ASP のコード内でどのような流れで exe をキックしようとしているのかが見えません。 CreateObject ~ exe を実行 までのコードと、どこでエラーが出るのかを書いた方が識者からの回答が得られやすいですよ。
補足
返信ありがとうございます。 省略して書きますが、 ASP: ------------------------------------------------------ Set obj = Server.CreateObject("Csvdll.exekick") obj.exec() ------------------------------------------------------ ActiveX:Csvdll.exekick ------------------------------------------------------- Public Function exec() Dim cmdline As String ret = Shell("c:\temp\test\test.exe") test_a = ret End Function ------------------------------------------------------ c:\temp\test\test.exe ----------------------------------------------------- Sub Main() Set db = CreateObject("ADODB.Connection") ・・・・・・・・・・・・・ ------------------------------------------------------- web上からaspを実行して、Csvdll.exekickからtest.exeを実行します。 exeの「CreateObject」で「ActiveX コンポーネントはオブジェクトを作成できません。」とエラーを吐きます。 しかし、サーバーに入り直接exeを実行するとエラーは起こりません。 ちなみにCreateObject("ADODB.Connection")のみではなく「CreateObject」文全てこのエラーが発生します。 宜しくお願いいたします。
お礼
みなさん。ありがとうございます。 権限を付けても解決しませんでしたが、 今まで、win2000上でコンパイルしたソースを2003serverで使用していたのが根本的なミスでした。 2003ServerはADOのバージョンが2.8なので、合わなかったようです。 2003ServerにVBをインストールし、2003内でDLLとEXEをコンパイルしましたら成功しました。 本当にありがとうございました。