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")だと
パラメータの受け渡しはありませんが起動はできます。
何がいけないんでしょうか・・・?
ご教授願います。
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)
この回答への補足
クライアントから見たEXEの実行の仕組みは
おっしゃるとおりですね。
起動方法案もせっかく出していただいたのですが
現状、このような作り変えは厳しいです。
みなさんからいろいろ意見を頂いて、また少し違った
角度から対応方法を考えられそうです。
しばらく自力で頑張ってみます。
No.5
- 回答日時:
#3の補足について
>これはIDが1~10まであったら実体も
>abc1.exe ~ abc10.exe を用意するという意味でし>ょうか?
>(たぶん違いますよね、すいません)
そういう意味です、すみません。
ユーザーがたくさんいた時には使えませんよね。
接続時に
abc.exe をコピーする
接続が切れたら削除するとしても
削除するタイミングが難しいですね。
確か、NT系列でもUNIXみたいに、(実体が)ファイルへのリンクであるようなファイルも作れたような気もしますが。
No.3
- 回答日時:
ちょっと考えてみたんですが、
アプリケーションプログラムから
起動した時の自分の名前って確かプログラムからゲットできますよね。
だったら、
abc10.exe
とか名前を変更して(実体はコピーすることになる)
実行してみてはどうでしょう?
ちなみに、
Response.Redirect("C:\abc.exe")
みたいな用法は、やはり、CGIとして使う時の用法みたいですね。
ディレクトリのアクセス権が読み取り可になっているとユーザー側でダウンロードして実行できるというようなことが書いてあります。(実行のみできるディレクトリに置くべきだと註があります。フルパスは使うべきではないかもしれませんね。)
ちなみに、.NETで作成したアプリは、単なるリンクで実行できます。まあ、これも、同じ使い方ですね。
こうしたプログラムをユーザー側で(いきなり)実行できるということは、セキュリティ上問題あるように思えますが、
.NETのプログラムで試したところ、ユーザー側の環境については、削除したりというようなことはできないようです。
参考まで
この回答への補足
>abc10.exe
>とか名前を変更して(実体はコピーすることになる)
>実行してみてはどうでしょう?
これはIDが1~10まであったら実体も
abc1.exe ~ abc10.exe を用意するという意味でしょうか?
(たぶん違いますよね、すいません)
No.2
- 回答日時:
EXEを動かすのはサーバ側?クライアント側?
>ちなみに
>Response.Redirect("C:\abc.exe")だと
>パラメータの受け渡しはありませんが起動はできます。
通常はResponse.RedirectにURL(相対指定も可能)を書きます。
Response.RedirectにフルパスでEXEをするのは、始めてみたけど、すごい発想ですね。
本当に動くの?
クライアント側でEXEを起動する?
本当に動くなら、セキュリティホールですね。恐ろしや。
こちらで試した限りは、ダウンロード画面が出て
クライアント側のEXEがダウンロードされる。
これもかなり気持ち悪い。
この回答への補足
EXEを動かすのはクライアント側です。
サーバー側に格納されているEXEを
クライアントがダウンロードして使用するといった
感じです。
パラメータを渡さなければ普通にダウンロード画面が
出て起動できます。
もしよろしければこの処理のどのへんが危険か
教えてもらえると参考になります。
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では動作しないのは当然のような気がします。
この回答への補足
abc.exeはCGIではなくクライアントマシンで動く
実体そのものです。
たしかに通常はURLだと思いますが
なぜかredirectを使用しています・・・。
他の起動方法を考えないといけないですね。
とりあえず教えていただいた方法をやってみます。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 exeファイルが起動しない 4 2022/06/05 16:13
- その他(IT・Webサービス) エクセルの実行ファイルについての質問です。 1 2023/05/04 03:58
- フリーソフト TJA-Player3 Develop Rewhite 2 2023/05/04 21:24
- Windows 10 Windows11の実行モジュールはどこにある 1 2022/05/31 07:33
- その他(セキュリティ) exeファイルの個人情報について 3 2023/06/29 17:36
- 労働相談 合意済み仕様の商品納入後における仕様変更要求への対応について 5 2023/04/19 09:41
- その他(プログラミング・Web制作) Windowsのメモ帳でジョークウイルスが作りたいです。 3 2022/06/04 12:17
- その他(プログラミング・Web制作) Windowsのメモ帳でジョークウイルスが作りたいです。 1 2022/06/04 11:30
- オープンソース Pythonのコードをexe化 1 2023/07/03 08:01
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイル 特定ウインドウ...
-
EXCELをバッチコマンドで...
-
vbsのショートカット作成で、引...
-
複数の処理の終了を待ちたい
-
ショートカットの作成とコピー
-
ASPからのEXEファイル起動
-
@@@.exeをOS起動後**秒後...
-
64bitのwindowsサーバーで32bit...
-
C#でMediaPlayerを立ち上げた後
-
Visual basic6.0からショートカ...
-
PL/SQLで作成したストア...
-
バッチへ値を返す
-
Market Speed をVBAで制御した...
-
xampp1.7.4のApacheが起動しない
-
サーバーに保存されているVB6で...
-
VB.NETでDOSコマンドの複数実行
-
CreateProcessの制御について
-
別PCのEXEを起動したいの...
-
VB.NETでコマンドプロンプトの操作
-
BASP21 で 外部プログラムが実...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイル 特定ウインドウ...
-
ExcelVBAにてアプリをタスクマ...
-
EXCELをバッチコマンドで...
-
stable diffusionのインストー...
-
batファイルで立ち上げたaplを...
-
ショートカットの作成とコピー
-
exe間での引き値の受け取り方法
-
VB.NETでDOSコマンドの複数実行
-
バッチファイル実行時に起動す...
-
VB.NETでコマンドプロンプトの操作
-
プログラムを実行すると、なぜ...
-
c#でコマンドプロンプトを実行...
-
gccがコマンドプロンプト上で使...
-
VBAからキャッシュを削除する方...
-
64bitのwindowsサーバーで32bit...
-
UWSCについて
-
ショートカットのリンク先が参...
-
バッチファイルからftpを実行時...
-
Shiftキーを押しながら起動
-
C#でMediaPlayerを立ち上げた後
おすすめ情報