- PR -

ASPよりサーバEXE起動について

1
投稿者投稿内容
さらさと
会議室デビュー日: 2004/05/28
投稿数: 8
投稿日時: 2008-01-18 18:47
こんにちは。
ASPよりサーバ上のEXEを起動しようとしても、起動しません。

『手法1』
Dim objWsShell
Set objWsShell = Server.CreateObject("WScript.Shell")
Call objWsShell.Run("d:\XXXXXX\YYYYY.exe", 2, blnSynchro)
Set objWsShell = Nothing

『手法2』
Set bobj = Server.CreateObject("basp21")
rc = bobj.Execute("cmd.exe /c d:\XXXXXX\YYYYY.exe", 1,stdout)

2種類の手法でどちらもIISの仮想ディレクトリ上にNOTEPAD.EXEをコピーして実行しております。仮想ディレクトリの実行アクセス権は「スクリプト及び実行可能ファイル」としております。
NOTEPADは起動せずに、タスクマネージャのプロセスではNOTEPADが起動している状況です。EXE起動の引数に「プログラムを起動して終了するまで待ちます。」にしておりますがASP側に制御が戻ってきません。

この状況の解決方法をご存知の方、どなたかいらっしゃいましたら
ご教授の程宜しくお願い致します。
GENZO
大ベテラン
会議室デビュー日: 2003/11/26
投稿数: 111
お住まい・勤務地: 名古屋
投稿日時: 2008-01-19 20:01
引用:

さらさとさんの書き込み (2008-01-18 18:47) より:
NOTEPADは起動せずに、タスクマネージャのプロセスではNOTEPADが起動している状況です。EXE起動の引数に「プログラムを起動して終了するまで待ちます。」にしておりますがASP側に制御が戻ってきません。



IISの実行ユーザタスクとして実行されていれば、その挙動は正しいと思います。
画面を確認したいのであればIISを実行しているマシンにログインするアカウントとIISの実行アカウントを同じものにしてみてください。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2008-01-19 20:15
引用:

GENZOさんの書き込み (2008-01-19 20:01) より:
引用:

さらさとさんの書き込み (2008-01-18 18:47) より:
NOTEPADは起動せずに、タスクマネージャのプロセスではNOTEPADが起動している状況です。EXE起動の引数に「プログラムを起動して終了するまで待ちます。」にしておりますがASP側に制御が戻ってきません。



IISの実行ユーザタスクとして実行されていれば、その挙動は正しいと思います。
画面を確認したいのであればIISを実行しているマシンにログインするアカウントとIISの実行アカウントを同じものにしてみてください。



Administrators group の member でも無い限り、"cmd.exe" の ACL ではじかれます。
ただし、この制御はどちらかというと logon している account というよりも、どのような logon 方法で logon したか?という点で制御が分かれます。

基本認証を利用していない場合には、NETWORK logon として扱われるので、"cmd.exe" を扱うことはできません。基本認証の場合には、INTERACTIVE logon として扱われます。

"cmd.exe" の ACL を編集すれば呼び出せるようにすることは可能ですが、そんなことをやると、自ら OS command injection を進んで招くようなものなので、通常はそんな対応はしません。

"cmd.exe" なんて呼び出さなくても処理は可能なので、通常は "cmd.exe" を呼び出さないように application を修正します。
_________________
1

スキルアップ/キャリアアップ(JOB@IT)