IISでのWebサーバー、CGIプログラムとしてバッチ

Anonymous
2024-09-13T03:03:18+00:00

IISでのWebサーバーを立ち上げ、CGIプログラムとしてバッチを起動したいのですが、起動出来たようではあるのですが、そのバッチの中からexeが起動出来ません。何か間違えているとは思うのですが、解りません。どのような原因が考えられるでしょうか?

<モデレーター注>

ディスカッションとして投稿されましたが、内容から判断して「質問」に変換しました。

この質問は Windows / Windows 10 / 設定 に投稿されましたが、内容から判断してこちらのカテゴリに移動いたしました。

適切なカテゴリに投稿すると、返信や回答が得られやすくなり、同じ質問を持つ他のユーザーの参考にもなります。

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。 プライバシーを保護するために、移行された質問のユーザー プロファイルは匿名化されます。

0 件のコメント コメントはありません
{count} 件の投票
承認済みの回答
  1. Anonymous
    2024-09-14T13:10:31+00:00

    <IMG src="/cgi-bin/AccessHtmUpd.bat?">の場合と、

    <IMG src="AccessHtmUpd.bat">の場合の、

    2通りで、クライアントのブラウザから、httpアクセスしてみましたが、

    HTML5の<img>タグのsrc属性には、画像ファイルのパスを指定するのが一般的です。もし実行プログラムのパスを指定した場合、ブラウザはそのパスを画像として解釈しようとしますが、画像ファイルではないため、画像が表示されません。

    どちらのフォルダ直下にも、「TraceMes.txt」は、出来ませんでした。

    勿論、クライアントのブラウザには、起動画面は表示されました。

    ほんとうにhttpクライアントでBATファイルの画面が見えたというのでしょうか?

    CGIの出力(stdout)はブラウザが解釈しているHTMLソースにインラインで展開されます。普通のhttpサーバーであれば500(Internal Server Error)エラーになるでしょう。

    実は、上の2通りのHTML文に、自信が無く、2通り試しているのですが、

    どちらか、或いは、両方の記述に、誤りが有るのでしょうか?

    その点が、良く理解出来ていません。

    その辺のところ、何かお気付きの事でも有れば、

    宜しければ、解説していただけますでしょうか?

    CGIでインライン実行プログラムを実行するには<iframe>タグを使います。

    例えばアクセスカウンターをCGIで実装するとこんな感じになります。

    画像

    今日的な記述方法ならCGIも使いません。サーバー側、もしくはブラウザ上でスクリプトを実行する方が簡易であり可用性が確保できる記法にできるからです。

    解説はオンラインドキュメントや書籍などを読まれることをお勧めします。

    **モデレーター注**

    こちらの返信で解決したということですね。

    他のユーザーの皆様にも参考になるように、こちらの返信を回答としてマークいたしました。

    もし、まだ問題が解決しないようでしたら、この回答マークを解除して返信にて質問を継続してください。

    0 件のコメント コメントはありません

7 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2024-09-13T03:49:58+00:00

    Copilot 様に聞いてみた方が早そうですね。

    Copilot 回答を生成しています…

    Copilot が送信しました:

    IISでCGIプログラムとしてバッチを起動し、そのバッチからexeファイルを実行できない場合、いくつかの原因が考えられます。以下の点を確認してみてください:

    1. 権限の問題:
      • IISのアプリケーションプールのユーザーアカウントに、バッチファイルやexeファイルを実行する権限があるか確認してください。デフォルトでは、アプリケーションプールのユーザーは制限された権限を持つことが多いです。
    2. パスの問題:
      • バッチファイル内でexeファイルを呼び出す際に、フルパスを指定しているか確認してください。相対パスではなく、絶対パスを使用することをお勧めします。
    3. IISの設定:
    4. 環境変数:
      • バッチファイルやexeファイルが依存する環境変数が正しく設定されているか確認してください。IISのアプリケーションプールの環境変数が、システム全体の環境変数と異なる場合があります。
    5. ログの確認:
      • IISのログやWindowsのイベントビューアーを確認し、エラーメッセージや警告が出ていないか確認してください。これにより、具体的なエラーの原因を特定できる場合があります。

    これらの点を確認しても問題が解決しない場合、具体的なエラーメッセージや設定内容を教えていただければ、さらに詳しくサポートできるかもしれません。

    0 件のコメント コメントはありません
  2. Anonymous
    2024-09-13T05:04:38+00:00

    早速の返信ありがとうございます。

    ご指摘通り、「要求の制限」が「スクリプト」だったので「実行」に更新しました。

    起動しようとしているバッチは、サーバー側から、ダブルクリックで実行すると、実行出来るので、

    環境変数その他の問題は無いと思われます。

    それでも、クライアント側からブラウザーで、httpアクセスしても、中のexeは実行されませんでした。

    ちなみに、バッチの中に「pause」コマンドも入れてあるのですが、

    サーバー側で見ても、コマンド・プロンプト・windowは、表示されていませんでした。

    他に考えられる事が、有りますでしょうか?

    もし、宜しければ、お答えください。

    0 件のコメント コメントはありません
  3. Anonymous
    2024-09-13T06:03:41+00:00

    バッチで起動している実行ファイルの処理が行われているかどうかをどのように確認されているのでしょう。

    実行のさせ方によりますが、コマンドプロンプトのウィンドウが表示されるとは限りません。

    デバッグ メッセージをログファイルに書き込むなど、実行の記録を残すようにして確認された方が良いですね。

    0 件のコメント コメントはありません
  4. Anonymous
    2024-09-13T07:18:04+00:00

    返信ありがとうございます。

    ご指摘の通り「echo バッチが起動されました。 > ”-------\TraceMes.txt”」なる1文を、

    2通りのバッチファイルの、exe起動行の直前に、加えてから、

    「index.html」の中が、

    <IMG src="/cgi-bin/AccessHtmUpd.bat?">の場合と、

    <IMG src="AccessHtmUpd.bat">の場合の、

    2通りで、クライアントのブラウザから、httpアクセスしてみましたが、

    どちらのフォルダ直下にも、「TraceMes.txt」は、出来ませんでした。

    勿論、クライアントのブラウザには、起動画面は表示されました。

    実は、上の2通りのHTML文に、自信が無く、2通り試しているのですが、

    どちらか、或いは、両方の記述に、誤りが有るのでしょうか?

    その点が、良く理解出来ていません。

    その辺のところ、何かお気付きの事でも有れば、

    宜しければ、解説していただけますでしょうか?

    0 件のコメント コメントはありません