WEBMODULE(ISAPI)でSHELLAPIは使えるのでしょうか?


QQ  2004-03-07 00:30:35  No: 7595

ISAPIを使ってサーバー上のサービスの再起動を、
クライアントからしようと思っています。
WEBサーバアプリケーションは初めてなので、よくわからないのですが、
再起動用の外部ファイルをいつものように、SHELLから叩こうと思うのですが、
コンパイルがとおりません。SHELLAPIがというより、
SW_SHOWNORMALが引っかかっているのです。考え方が間違っていますでしょうか?


QQ  2004-03-07 00:34:23  No: 7596

クライアント⇒ISAPIアプリケーション⇒外部再起動EXE⇒結果
⇒ISAPIアプリケーション⇒クライアント
流れはこんな感じで考えているんですが


jok  2004-03-07 01:16:28  No: 7597

> コンパイルがとおりません。SHELLAPIがというより、
> SW_SHOWNORMALが引っかかっているのです。

コンパイルできない、ということは Delphi が動作している環境で、ということ
だと思います。SW_SHOWNORMAL は Windows.pas で定義されていますが
uses してますか?


QQ  2004-03-07 03:46:57  No: 7598

jok様有難うございます!
コンパイルできました。
クライアントのブラウザからサーバ上のDLLを呼びだして
表示結果をとることが出来ました。しかし、
SHELLでサーバー上のEXEを起動してないようでエラーが還ります。
これは、EXEファイルへのパスに問題があるのでしょうか?

mypath:=GetCurrentDir;
mypath:=mypath+'\test.EXE';
ShellExecute(0,'open',pchar(mypath),nil,nil, SW_SHOWNORMAL);

これをACTIONに書いているのですが・・


jok  2004-03-07 03:51:12  No: 7599

ちょっと前にも、そしてたびたび話題になることですが、
カレントディレクトリを基準にした操作は危険ですよ。
ParamStr(0) や Application.Exename から EextractFilepath() で
絶対パスを取得して、起動パラメータを絶対パスで指定するようにしてください。


QQ  2004-03-07 05:03:56  No: 7600

サーバ上に目的のファイルの存在は確認できるのですが、
実行できません。まいったなぁ


QQ  2004-03-08 00:34:30  No: 7601

クライアント側からサーバーのサービスを再起動するには、
ISAPIなどではなく
TCP/IPソケット通信を考えたほうがいいのでしょうか?


QQ  2004-03-08 09:45:44  No: 7602

起動してるようです、サーバー上のプロセスに名前があります。
しかし、名前はあるのですが、処理が走っていないようです。
権限などの問題でしょうか?


ふじっこ  2004-03-10 21:06:59  No: 7603

まず、処理がどのような状態で実行もしくは、エラーが
発生しているかについて
ログ出力などをプログラムにもりこみ
確認しましょう。
すくなくとも、権限について問題があれば、実行させた
プロセスが書き出すログによりわかると思います。


QQ  2004-03-12 01:07:59  No: 7604

>>ふじっこ様
アクセス拒否でした。IUSR,IWAM_USRなど、思い当たるところに、権限を与えまくっているのですが、まだうまくいきません。
しかし、なんか糸口がつかめそうです・・・
PINGやIPCONFIGなどは問題ないのですが、NET STOPなどはアクセス拒否です。
もう少し粘ってみマス


ふじっこ  2004-03-12 04:11:43  No: 7605

もう少し、情報をいただきたいので、質問を(m_m)

外部実行させるEXEの目的をもう一度整理しましょう。
NET  STOPコマンドは、サービス停止系ですよねt

WebサーバーPC内部のサービス・環境まで
QQ様が作成しようとしている外部EXE呼び出し機能で
コントロールさせたいのですか??

※セキュリティの観念から言いますと
  むやみやたらに権限与えるのではなく
  一つ一つ検証したら、必ず元に戻しましょうねtt


QQ  2004-03-13 22:54:10  No: 7606

>>ふじっこ様
返事が送れて申し訳ありません・・

はいコントロールしたいです。
私どものオリジナルサービスの再起動をクライアントからかけたいのです。

はいセキュリティは気をつけます


ふじっこ  2004-03-16 22:15:27  No: 7607

返事がおくれまして、申し訳ありませんでした。
私どもの採択した解決方法ですが
結局ISAPIを採用せず。
ASPを使用しました
ASPには、サーバーサイドにあるCOMモジュール(ActiveXオブジェクト)であれば
呼び出しおよび実行可能な機能があります。
ASPにてサーバーPCにてさせたいインタフェースを構築し
ASPから呼び出すCOMモジュールにてサーバーPC内部構成を
変更・再起動するという方法を選びました。
結果、ISAPI権限も変更することなく、
Webインタフェイス部分のセキュリティを考慮するだけと
なりましたので簡素ですみました。

作成手順は以下の手順です
・CreateProcessを盛り込んだActiveXオブジェクト作成
  および、レジストリに登録
  このオブジェクト内部にて、サーバー内部の各制御する
  コマンドをメソッドとして定義
・ASPにて
  サーバーサイドからサーバー内に登録している先ほどのオブジェクト
  を呼び出しメソッド実行
以上です。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加