人に聞けない痔の悩み、これでスッキリ >>

初めまして。
2003Server+IIS6.0の環境でASP内のActiveXからShell関数でvbのexeを実行させる処理を作成しております。
サーバーから直接exeを実行させると正常に動くのですが、Web上からasp→ActiveX→exeを起動させるとテキストに書き込む処理はできるのですが、「CreateObject」文で「ActiveX コンポーネントはオブジェクトを作成できません」というエラーが返ります。

VB内でなぜ「CreateObject」が出来ないのかご存知の方はいますでしょうか。
宜しくお願いいたします。

このQ&Aに関連する最新のQ&A

ActiveX とは」に関するQ&A: ActiveXとは

ASP とは」に関するQ&A: URLの.aspとは??

A 回答 (3件)

Ano.2さんが回答されていますが、アクセス権がないんじゃないかとおもいます。


IISの場合、
 ASP自身(IIS自身)のアカウントとしてIWAS_マシン名
 ASPを見るインターネットゲストアカウントとして IUSR_マシン名
の二つがあります。
デフォルトでは
IWAS_マシン名のアカウントはサービスユーザとして、
IUSR_マシン名のアカウントはGuestユーザとして
のアクセス権が与えられます。
IUSR_マシン名 のユーザに適当なフォルダアクセス権や実行権を与えてあげれば、動作すると思います。
    • good
    • 0
この回答へのお礼

みなさん。ありがとうございます。

権限を付けても解決しませんでしたが、
今まで、win2000上でコンパイルしたソースを2003serverで使用していたのが根本的なミスでした。
2003ServerはADOのバージョンが2.8なので、合わなかったようです。
2003ServerにVBをインストールし、2003内でDLLとEXEをコンパイルしましたら成功しました。

本当にありがとうございました。

お礼日時:2007/06/19 12:54

実行権限では?


公開されていないのであれば
ASPの実行ユーザー(IUSR?)に管理者権限を一時的に付与したら動きそうな…。
    • good
    • 1

ここで言っておられる 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」文全てこのエラーが発生します。

宜しくお願いいたします。

補足日時:2007/06/18 20:56
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBでエラー'ActiveX component can't create object' FAQチェック済

表題のとおり、「activexコンポーネントはオブジェクトを作成できません」エラーがでます。米国なので英語環境です。

環境
OS:Windows Adv Server2000(事情によりサーバーでコンパイルしてます)
VB6, SQL server 2000
True DB GRID(Third Party)

SQLConnection.ConnectionTimeout = Val(ObjectLib.GetSysSetting("SQLTIMEOUT"))

どうやらObjectLibオブジェクトが参照できていないようです。が、確信はありません。とにかくこの部分でエラーとなり、エラールーチンを経由して表題のエラーメッセージに到達します。クライアントマシン(win2000)でコンパイルしたときは動作しますが、サーバーだとコンパイルできません。


マイクロソフトのサイトのFAQにあがってたので、レジストリの再登録やプロジェクト参照をすべて見直してみたのですが、それらには問題ないにもかかわらずこのエラーが消えません。それ以外の方法でこのエラーを回避されたかた、いらっしゃったらヒントをください。納品がせまっていて焦っております・・・

表題のとおり、「activexコンポーネントはオブジェクトを作成できません」エラーがでます。米国なので英語環境です。

環境
OS:Windows Adv Server2000(事情によりサーバーでコンパイルしてます)
VB6, SQL server 2000
True DB GRID(Third Party)

SQLConnection.ConnectionTimeout = Val(ObjectLib.GetSysSetting("SQLTIMEOUT"))

どうやらObjectLibオブジェクトが参照できていないようです。が、確信はありません。とにかくこの部分でエラーとなり、エラールーチンを経由して表題のエラーメッセージ...続きを読む

Aベストアンサー

締め切られていないと言うことは投稿してもいいんでしょうかね?
とは言っても
回答に対する自信:全くなし
なんですけど・・。

私がそのエラーメッセージを見た時は、PGを実行するマシンにAdministrator権限が無かった場合でした。
Admin権限を与えたら動くようになりました。

でも質問者さんの場合はレジストリの再登録をしてみたという事なので、きっと権限はあるんですよね・・。
関係無いだろうな~と、思いつつそのエラーメッセージの一例として投稿してみました。
関係無ければこの投稿は見なかった事にして下さい(^^;

Q実行時エラー429

あるプログラムを起動させようとすると
以下のメッセージが出てきてしまい起動できません。

実行時エラー429
ActiveXコンポーネントは、オブジェクトを作成できません。

対応策は、ございますか?
VB6の最新版は、ダウンロード済みです。
http://www.vector.co.jp/soft/win95/util/se188840.html

Windows98
Office97

諸事情でこちらの環境を替える事は、
出来ないんです・・・

Aベストアンサー

こんばんは。

よくわからないのですが、dao360.dllが入っていないから出るメッセージならば
下記参考URLからダウンロードしてみてはいかがでしょうか。

参考URL:http://www.vector.co.jp/soft/win95/util/se257084.html?site=n

Q実行時エラー’429’: ActiveXコンポーネントはオブジェクトを作成できません。

源氏物語夕顔編というフリーで、広告が表示されるのタイピングソフト
をインストールすると、

「実行時エラー’429’: ActiveXコンポーネントはオブジェクトを作成できません。」

というエラーが表示されるようになり、
ソフトをアンインストールしたのですが、
Windows XPの起動時に必ず
このメッセージが出るようになってしまっています。

インストールしたタイピングソフトはコチラです↓
http://www.vector.co.jp/soft/win95/edu/se448263.html

調べたところ、ランタイムという実行環境が無くなってしまったようなのですが、どうやって修正すれば良いかわからず、

このメッセージを消す方法をご存じでしたら教えてください!

エラーメッセージを添付致します。

Aベストアンサー

こんにちは。

何らかの原因で、時間がかかり過ぎて、インストールができなかったものと考えます。

「スタート」「検索」「ファイルとフォルダーすべて」を選択「ActiveX」と入力。「検索開始」。

検索された中に「源氏物語夕顔編のActiveX」が出てくるかもしれません。右クリックで「削除」をして、再度「源氏物語夕顔編」へアクセスしてみてはいかがでしょうか。

QVB6のプログラムをWIN7で使いたい

OSをXpからWIN7に移行しなければならなくなり、環境移行のテストをしています。
VB6で組まれた業務用プログラムがあり、現在Xpで動作しています。
このプログラム自体はWIN97の時代に作成されたものです。
簡単に説明しますと、データがAccessのデータベースにあり、それを使って技術計算をするプログラムです。
WIN97に入れると、セットアップは成功するのですが、Accessとデータをやり取りする部分でエラーが起きているようです。
そもそも、VB6自体がWIN7にはセットアップできないようで、再コンパイルできません(再コンパイルで動くかどうかも不明ですが)。
WIN7上で動かす良い方法がないでしょうか。

Aベストアンサー

VB6アプリケーションは、Windows7でも動作可能です。
ただし、サードパーティ製のActiveXコントロールを利用している場合は、
その限りではありませんが。

ActiveXコントロールが不足してたりしませんか?
ActiveXコントロールを含めたインストーラーを使ってインストールしていますか?

EXEをコピーしただけで動かないと言っているのであれば、
WinXP(もちろんWin98でも可)あたりにVB6を入れて、インストーラーを作成して下さい。

もしくは、ActiveXコントロールをインストールする為のダミーのツールでもインストールすれば良いかな。

こんなの
http://www.vector.co.jp/soft/win95/util/se188840.html

QCreateObject("Excel.Application")でVBScript実行時エラー

ActiveServerPage(サーバーサイド)でExcelを起動させ
データベース(SQLServer)より取得したデータをExcelに貼付け
保存させたいのですが。

2台のPCでは正常に動作するものの、もう1台のPCで実行すると
以下エラーが発生します。
----------------------------------------------
Microsoft VBScript 実行時エラー
エラー'800a01ad'
ActiveXコンポーネントはオブジェクトを作成できません。
:'Excel.Application'
/××/××/××.asp 行705
----------------------------------------------
↓705行目
<%
..
set ○○ = CreateObject("Excel.Application")
..
%>

Microsoftサポート技術情報の
[IIS]ASPがVBScript実行時エラー"800a01ad"を返す
http://support.microsoft.com/default.aspx?scid=kb;ja;JP194801
レジストリを確認しましたが、3台とも同じ設定でした。
またExcelファイルのアクセス権をEveryOneフルコントロールに設定し
実行してみましたが状況が変わらず・・・。

クライアントサイドのVBScriptでExcelを起動させて
見た所、問題なく起動終了しました。
IISの問題なのでしょうか?

ちなみに環境はWinNT4.0、IIS4.0(SP6)、Excel2000(SR-1)です。

同様のケースで過去に解決された方、または良い案がある方。ご教授下さい。

ActiveServerPage(サーバーサイド)でExcelを起動させ
データベース(SQLServer)より取得したデータをExcelに貼付け
保存させたいのですが。

2台のPCでは正常に動作するものの、もう1台のPCで実行すると
以下エラーが発生します。
----------------------------------------------
Microsoft VBScript 実行時エラー
エラー'800a01ad'
ActiveXコンポーネントはオブジェクトを作成できません。
:'Excel.Application'
/××/××/××.asp 行705
----------------------------------------------
↓705行目
<...続きを読む

Aベストアンサー

set ○○ = Server.CreateObject("Excel.Application")

ではどうですか?

QIEからクライアントのEXCELのオブジェクトを生成できない

いつもお世話になっております。

現在、HTML内に以下ソースを記述しクライアント側の
EXCELオブジェクトを取得しようとしています。
がしかし、エラー(429 ActiveXコンポーネントはオブジェクトを生成できません)がでます。
このソースをVBSファイルにして実行するとちゃんと
EXCELが生成されるので、ロジックに問題はないようにおもえます。

どなたか心当りのある方、ご助言宜しくお願い致します。

*****ソース開始********
<body>
<script language="VBScript">
Sub Window_OnLoad()
Dim objExcelApp
Dim objExcelBook
On Error Resume Next
Set objExcelApp = CreateObject("Excel.Application")←この時点でエラーがでる。
 Set objExcelBook = objExcelApp.Workbooks.Open("http://localhost/aaaa/asptst/excelwork.xls", , True)←このEXCELマクロを実行したい

*****ソース終了********

いつもお世話になっております。

現在、HTML内に以下ソースを記述しクライアント側の
EXCELオブジェクトを取得しようとしています。
がしかし、エラー(429 ActiveXコンポーネントはオブジェクトを生成できません)がでます。
このソースをVBSファイルにして実行するとちゃんと
EXCELが生成されるので、ロジックに問題はないようにおもえます。

どなたか心当りのある方、ご助言宜しくお願い致します。

*****ソース開始********
<body>
<script language="VBScript">
Sub Window_OnL...続きを読む

Aベストアンサー

下記URLのページの一番下にこの説明がありますが、
IEのセキュリティでクライアントスクリプトの許可を
行なって下さい。
但し、インターネットゾーンで許可するのは大変危険ですので、
「信頼済みサイト」または「イントラネット」としてから
設定を行なって下さい。

参考URL:http://www.asahi-net.or.jp/~ef2o-inue/download/sub09_020_120.html

QCreateObjectでエラー

VB初心者です。
VB6で以下のコードのCreateObjectがエラー になってしまいます。
何が原因と考えられますか?

Dim objFileSys As Object

CheckFileExist = False


'ファイルの有無を確認する
Set objFileSys = CreateObject("Scripting.FileSystemObject")
  ↑
  ここで、エラーが発生

CheckFileExist = objFileSys.FileExists(S_strFileFull)
Set objFileSys = Nothing

  エラーメッセージが
  「オートメーションエラーです。
   ライブラリが登録されてません。」

  と出てしまいます。何が原因と考えられますか?
  よろしくお願いします。

Aベストアンサー

FileSystemObjectがないのではないでしょうか。
一度、FileSystemObjectを参照設定されてみては如何でしょうか。

QOracleInProcServer.XOraSession オブジェクト作成時の参照ファイル

VBで OracleInProcServer.XOraSession を使い、
oracle9iのサーバーへ接続したいのですが、
現在10gのクライアントがインストールされており、
9iをインストールしてもサーバーへ接続できません。

レジストリを見るとoo4oは10gへ向いているようですが、9i用のDAOを利用したいです。

例えばOracleInProcServer.XOraSessionを利用したときに9iのoo4oを参照したいのですが、どのような方法があるでしょうか?

宜しくお願い致します。

Aベストアンサー

10gと9iの連携はしたことがありませんが、9iクライアントから8iサーバへの接続はしたことがあります。

サーバが9iだから9iクライアントを利用したいというだけであれば、10gクライアントからでも接続できませんか?

どうしても9iを利用したいのであれば、参照設定に入れてしまえばできませんか?
参照設定に
[OracleInProcServer X.X Type Library]
が二つ存在していませんか?

環境が無いままに話をしているので、想像で話をしております。すいません。

QVB6(SP5)+OO4OでCreateObjectが失敗する

上記の環境でプログラムを作成しています。
Windows2000ではうまくいきました。
WindowsXP(Professional)で失敗します。

Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase(C_ORACLE_TNS, C_ORACLE_USER & "/" & C_ORACLE_PASS, 0)

のようなコーディングでCreateObjectのところで失敗しエラーとして429 ActiveX コンポーネントはオブジェクトを作成できません。
というのが発生します。

Oracleのバージョンは9iでそのクライアントパック9.2.0.1.0を管理者モードでインストールしています。
もちろんOO4Oはインストールされていますし、VBの参照設定でOracle InProc Server 4.0 Type Libraly を追加しています。

何度か再インストールなどしましたが全く同じです。何がいけないのでしょうか?直接回答でなくてもヒントでも何でも教えてください。

なおSQL Plusでテーブルの参照はできています。

上記の環境でプログラムを作成しています。
Windows2000ではうまくいきました。
WindowsXP(Professional)で失敗します。

Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase(C_ORACLE_TNS, C_ORACLE_USER & "/" & C_ORACLE_PASS, 0)

のようなコーディングでCreateObjectのところで失敗しエラーとして429 ActiveX コンポーネントはオブジェクトを作成できません。
というのが発生します。

Oracleのバージョンは9iでそのクライアントパッ...続きを読む

Aベストアンサー

通常は正しく削除されてしかるべきなのでしょうが、レジストリにキーが残った状態になることもありますので
・・・
完全削除についてはリリースノートにも記載されております。

Oracle9i Client for Windows インストレーション・ガイド リリース2 (9.2.0.1.0)(2002/8/7)
「オラクルコンポーネントのインストール」「oracleコンポーネントとサービスの削除」

参考URL:http://otn.oracle.co.jp/document/products/oracle9i/920/windows.html

Qオブジェクト(dll)のレジストリ登録について

いつもお世話になっております。

dllの使い方について教えてください。

vb5.0で開発を進めているのですが、
dllを呼び出す際に、レジストリ登録を
しなければいけないのでしょうか?

いくつかのサイトでは、参照設定際すれば、
実行できているようです。。

実行環境では、レジストリ登録しないと
動かない場合があるということでしょうか?

ご教授、よろしくお願いします。

Aベストアンサー

何のDLLか、によるが。

・あなたがVB5.0で作成したDLLを、開発に使ったマシン以外で使う。
→該当するマシンでレジストリに登録する必要があります。

・あなたがVB5.0で開発を行うにあたり使用するDLLを開発に使ったマシン以外で使う。
→VB5.0で参照設定できるのであれば、それと同じ方法で該当するマシンにDLLをインストールすれば同様にレジストリに登録済みとなる事でしょう。

よくわかんなければ次のようにしてみれば良いだろう。コマンドプロンプトを開いて
C:\>regsvr32 hogehoge.dll
これで「Successful」と出ればActiveX DLLだ。エントリポイントが見つかりません云々と言われたらそれはWin32ネイティブDLLという事。登録に失敗して環境を壊すという事はないのでとりあえず登録を試みてみれば良いのではないかな。

現在では大きく分けてDLLは3つある。
・Win32ネイティブDLL:レジストリ登録不要。パスの通った所に配置する。
・ActiveX DLL:レジストリ情報によって呼び出すDLL。レジストリに登録する。インプロセスCOMサーバと言っても差し支えないかもしれないがあるかもしれない。
・Microsoft .Net アセンブリ:レジストリの登録は不要。単純に実行ファイルと同じパスに配置するか、.Netにおけるレジストリといえるグローバルアセンブリキャッシュに登録する。

何のDLLか、によるが。

・あなたがVB5.0で作成したDLLを、開発に使ったマシン以外で使う。
→該当するマシンでレジストリに登録する必要があります。

・あなたがVB5.0で開発を行うにあたり使用するDLLを開発に使ったマシン以外で使う。
→VB5.0で参照設定できるのであれば、それと同じ方法で該当するマシンにDLLをインストールすれば同様にレジストリに登録済みとなる事でしょう。

よくわかんなければ次のようにしてみれば良いだろう。コマンドプロンプトを開いて
C:\>regsvr32 hogehoge.dll
これで「S...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング