• ベストアンサー

ASPからのEXEファイル起動

VBScriptで作ったASPからVisualBasicで作ったEXEファイルを起動するプログラムを作りました。 そこでEXEファイルを起動する際にASPで持ってる情報(ユーザID)を 起動をかけるEXEに渡したいのですがうまくいきません。 DOS画面より >C:\abc.exe 10 とうつとパラメータ 10が引きわたり正常に起動します。 ところがWEBから Response.Redirect("C:\abc.exe 10")とやると ページが見つかりませんとなります。 ちなみに Response.Redirect("C:\abc.exe")だと パラメータの受け渡しはありませんが起動はできます。 何がいけないんでしょうか・・・? ご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.4

>もしよろしければこの処理のどのへんが危険か >教えてもらえると参考になります。 警告画面なしに実行できるのであればの話でした。 >パラメータを渡さなければ普通にダウンロード画面が >出て起動できます。 "開く"を選択した場合ですね。(その後警告が出てOKして) ブラウザはローカルのc:\abc.exeをコピーして、実行しているだけです。 >サーバー側に格納されているEXEを >クライアントがダウンロードして使用する と違うでしょう。 >他の起動方法を考えないといけないですね。 (1)VB6でActiveXを作る。 パラメータはプロパティで渡す。 (2)VB.NETで作る。(ノータッチ・デプロイメント) Windows FormプロジェクトでEXEを作って、wwwrootの下に置けば、 Response.Redirect("abc.exe?id=1") で、クライアント側にダウンロードしてEXEが動きます。 警告画面は出ません。 条件は EXEがファイル操作など、セキュリティに違反しないこと。 クライアント側に.NET Frameworkが必要、ブラウザはIE限定。 サーバ側の条件はありません。(Linux+ApacheでもOK)

baksan2004
質問者

補足

クライアントから見たEXEの実行の仕組みは おっしゃるとおりですね。 起動方法案もせっかく出していただいたのですが 現状、このような作り変えは厳しいです。 みなさんからいろいろ意見を頂いて、また少し違った 角度から対応方法を考えられそうです。 しばらく自力で頑張ってみます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

#3の補足について >これはIDが1~10まであったら実体も >abc1.exe ~ abc10.exe を用意するという意味でし>ょうか? >(たぶん違いますよね、すいません) そういう意味です、すみません。 ユーザーがたくさんいた時には使えませんよね。 接続時に abc.exe をコピーする 接続が切れたら削除するとしても 削除するタイミングが難しいですね。 確か、NT系列でもUNIXみたいに、(実体が)ファイルへのリンクであるようなファイルも作れたような気もしますが。

全文を見る
すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

ちょっと考えてみたんですが、 アプリケーションプログラムから 起動した時の自分の名前って確かプログラムからゲットできますよね。 だったら、 abc10.exe とか名前を変更して(実体はコピーすることになる) 実行してみてはどうでしょう? ちなみに、 Response.Redirect("C:\abc.exe") みたいな用法は、やはり、CGIとして使う時の用法みたいですね。 ディレクトリのアクセス権が読み取り可になっているとユーザー側でダウンロードして実行できるというようなことが書いてあります。(実行のみできるディレクトリに置くべきだと註があります。フルパスは使うべきではないかもしれませんね。) ちなみに、.NETで作成したアプリは、単なるリンクで実行できます。まあ、これも、同じ使い方ですね。 こうしたプログラムをユーザー側で(いきなり)実行できるということは、セキュリティ上問題あるように思えますが、 .NETのプログラムで試したところ、ユーザー側の環境については、削除したりというようなことはできないようです。 参考まで

baksan2004
質問者

補足

>abc10.exe >とか名前を変更して(実体はコピーすることになる) >実行してみてはどうでしょう? これはIDが1~10まであったら実体も abc1.exe ~ abc10.exe を用意するという意味でしょうか? (たぶん違いますよね、すいません)

全文を見る
すると、全ての回答が全文表示されます。
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

EXEを動かすのはサーバ側?クライアント側? >ちなみに >Response.Redirect("C:\abc.exe")だと >パラメータの受け渡しはありませんが起動はできます。 通常はResponse.RedirectにURL(相対指定も可能)を書きます。 Response.RedirectにフルパスでEXEをするのは、始めてみたけど、すごい発想ですね。 本当に動くの? クライアント側でEXEを起動する? 本当に動くなら、セキュリティホールですね。恐ろしや。 こちらで試した限りは、ダウンロード画面が出て クライアント側のEXEがダウンロードされる。 これもかなり気持ち悪い。

baksan2004
質問者

補足

EXEを動かすのはクライアント側です。 サーバー側に格納されているEXEを クライアントがダウンロードして使用するといった 感じです。 パラメータを渡さなければ普通にダウンロード画面が 出て起動できます。 もしよろしければこの処理のどのへんが危険か 教えてもらえると参考になります。

全文を見る
すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

Set WshShell = CreateObject("WScript.Shell") WshShell.Run("c:\abc.exe 10") では、だめですか? >何がいけないんでしょうか・・・? Response.Redirectって引数は通常URLですよね。 abc.exeがCGIとして動作するなら abc.exe?no=10 とかで動作するのかもしれませんが、 abc.exe 10では動作しないのは当然のような気がします。

baksan2004
質問者

補足

abc.exeはCGIではなくクライアントマシンで動く 実体そのものです。 たしかに通常はURLだと思いますが なぜかredirectを使用しています・・・。 他の起動方法を考えないといけないですね。 とりあえず教えていただいた方法をやってみます。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ブラウザからEXEを起動するには

    VBで作成したEXEファイルをブラウザから起動したいのですが、 うまく行きません。お知恵を拝借させてください。 以下やってみたことです。 1.EXEを起動させるバッチファイルを書いてそれにリンクをする。 →起動時に確認のポップアップが出てきて鬱陶しい 2.ASPで、以下のような記述をする <% Set bobj = Server.CreateObject("basp21") rc = bobj.Execute("C:\×××\×××.exe",0,stdout) if rc = 0 then Response.write "成功" Elseif rc = -1 then Response.write "エラー" Elseif rc = -2 then Response.write "タイムアウト" End if %> →画面上は「成功」の文字が出てくるけれども、EXEは起動しませんでした。  しかし、よくよく見るとプロセスだけは立ち上がっていて。。。  どうすればきちんと起動するのでしょうか? よろしくお願いします。

  • exeファイルが何もせず終了してしまいます。

    exeファイルが何もせず終了してしまいます。 exeを起動することによりDOSが起動し、ユーザ入力を求めるプログラムを 作成し、exeを作成しました。 私のPCで実行したところ正常に処理が開始(DOS画面が起動)されますが、 新しく導入したPCにexeファイルを移植したところ処理が開始されず 終了してしまいます。 (一瞬DOSが立ち上がるのですが、すぐに終了してしまう。) 他のexeを試したところ、ファイルサイズの小さい(200KB)程度の exeは正常に動作しますが、該当のexe(500KB)のexeのみ実行 出来ないようです。 新しいPCの設定周りがおかしいのかな?と思い以下の 対応をしましたが、改善されません。 http://pasofaq.jp/windows/startmenu/exefile.htm 私のPC、新しいPCともにOSはWindowsXP、開発言語はCです。 プログラムの詳細は諸事情により記述できません。。 情報が少なく申し訳ありませんが、 類似した事例を経験された方がいらっしゃいましたら対処法を 教えて頂ければと思います。

  • ASPで別ページにPOSTで送信したい。

    お疲れさまです。2回目の質問になります。皆様よろしくお願いします。 行いたい事は タイトル通り 別ページにPOSTで送信を行いたいのです。 GET送信はResponse.Redirectで送信できますが パラメータが出てしまいます。 ASPの次のページはASPではないのでASP間のパラメータ渡しは出来ません。 なにとぞ皆様の良い知恵をお貸し下さい。サーバーはNT4.0です。 よろしくお願いします。

  • Response.Redirectで引数2つの時は?

    Response.Redirectで引数2つの時は? Response.Redirectで引数2つ使う場合はどう表現すればいいでしょうか 一つの場合は下記で上手くなるのですが 送る方 1.asp Response.Redirect "2.asp?para=パラメータ" 受ける方 2.asp para = Request("para")

  • ASP + ActiveReports

    ASP+VBScriptを利用して、ActiveReportsで作成した帳票を印刷したいと考えております。 やりかたとしては、RPXファイル(レポート定義ファイル)にSQL文を埋め込んで、ARビューワーで表示させる方法でいいと思うのですが・・・。 (違っていたら教えて下さい!!) 問題は、帳票にASPから入力したSQLパラメータを渡したいことです。どうしたらよいのでしょうか? あと、OBJECTタグのID,CLASSIDに何を入れたら良いのかもよく分かりません。 始めたばかりで、見当違いの質問でしたらすみません。 よろしくお願い致します。

  • asp(vbscript)で画面を切り替える

    教えてください。 Vbscript初心者です。 現在111.aspというプログラム内で、onClick="abc()"という関数を呼び出し 呼ばれた側の関数で新たに別画面を呼び出すようにしています。 別画面(222.asp)でなく画面を切り替えるようにしたいのですが、どのように変更すれば良いか分かりません。 宜しくお願い致します。 <TD><INPUT type="button" value="テスト" onClick="abc()"></TD> function abc(){ window.open("222.asp?id=<%=Request.QueryString("id")%>") }

  • .exeファイルが起動できません.

    ・現象  .exeファイルを起動しようとすると,+Lhacaという圧縮解凍ソフトが起動し,起動しようとしたexeファイルのlzh圧縮したファイルをつくってしまいます.  どのexeファイルでも,同じ現象がおこります.  ダブルクリックで起動しても,スタートメニューから起動しても,ファイル名を指定して実行から起動しても,圧縮ファイルができてしまいます.  ただ,.xlsや.docのように,アプリケーションに関連付けられたファイルは開くことができます.  またエクスプローラは,左下のスタートボタンを右クリックすることで起動できます.  .exeファイルの関連付けが変更されたのでは?と考え,ここの質問を参考にし [スタート]-[ファイル名を指定し実行] から command を実行 次のコマンドを実行 C:\>assoc .exe=exefile C:\>ftype exefile="%1" %* を行ってみたのですが,状況は変わりませんでした.  エクスプローラのフォルダオプション,ファイルの種類タブから関連付けを見たのですが,exeは登録がありませんでした.  再起動もしてみたのですが,Windows起動時のスタートアップ等で,自動実行されるファイルの圧縮が行われるだけでした. なんとか元に戻したいと思いますので,何卒宜しくお願い致します.

  • [ASP]URL付加情報を転用したい。

    こんばんわ。 連続書き込みをお許しください。 Response.Redirect = "b.html" でBのページに移動できますよね? たとえばこのページが・・・ a.html?ID=12345&TYPE=abc&ZONE=C110 などのページだとします。 単純にBのページを表示したいのなら、さっきのようになコマンドでいいのですが、AのページのURLに付加されている情報をあわせてそのまま表示したい、つまり、 b.html?ID=12345&TYPE=abc&ZONE=C110 というばあい、何かいい方法はありませんか? ちなみに付加情報はPOST情報だったりします・・・。 宜しくお願いいたします。 JavaScriptで出来ると考え、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=649582 に書き込んでみましたがCGIを提案されています。 JavaScriptで無理でCGIでとなれば、出来ればASPで書きたいのですが。。。 いい方法はないでしょうか? 宜しくお願いいたします。

  • ASPで画面間のパラメタ受け渡し

    こんばんは。ASP初心者です。 ASPでWEBページの作成を行っています。画面遷移をResponse.Redirect()で行っているのですが、遷移前のページと遷移後のページでパラメタを受け渡したい場合はSession("hoge") = "hogehoge"のようにセッションに入れる以外、何か方法はないでしょうか。リクエスト間でパラメタ渡せればがいいので、セッションを通じて保持しておく必要がないのです。クエリを使用するとアドレス欄に変数の値が見えてしまうのでできれば使いたくありません。

  • VBScript(WScript)のバッチファイル実行

    お世話になります。 VBScriptで困っています。 ご存知の方、ご教示願えますでしょうか。 Windowsでバッチファイルを実行したときに、DOS画面(コマンドプロンプト)が一瞬パッて表示されるかと思います。 現在開発中のシステムで、プログラムからバッチファイルを自動で実行する処理を入れております。 通常ならばバッチファイルを実行した場合、DOS画面が表示されてしまいますが DOS画面を出さないようにプログラムを組んでいます。 つまり、VBScriptからバッチファイルを実行しております。 以下、VBScriptのソースを記載します。 Set objShell = WScript.CreateObject("WScript.Shell") fcresult = objShell.Run("C:\abc.bat", 0, True) wscript.quit fcresult 上記のVBSを実行すると、必然的に「abc.bat」が実行されます。 しかし、現在僕が使っている環境ですとDOS画面が表示されません(←これがやりたいこと) しかし、お客さんの環境で同じ様にVBSからバッチファイルを実行すると 「C:\WINDOWS\System32\CScript.exe」という名前でDOS画面が起動されてしまいます。 周りの環境でもVBSからバッチをたたくような処理を行ってみましたが、DOS画面が起動されず。。。 正直、再現が難しいため大変困っております。 お客さんの環境では100%再現されます。 全くもって原因がつかめておりません。 Windowsのセキュリティの設定でしょうか!? ご存知の方いらっしゃいましたら、知恵をお貸しください。 よろしくお願いいたします。

このQ&Aのポイント
  • 中継器を使用して5m程度離れた母屋と離屋をカバーできるか検討中です。
  • 母屋から奥の部屋にはwifi電波がギリギリ届いており、切れることもあります。
  • LANケーブルで母屋と離屋を繋ぎ、中継器を2台使用してカバーする考えです。
回答を見る

専門家に質問してみよう