none
IIS経由ShellExecuteでブラウザが表示できない RRS feed

  • 質問

  • VC6で作成したCGIをIISのアプリケーションプールを利用して動かしています。
    今回、CGIにリクエストがあった際に、
    サーバ側でブラウザを起動し、指定のURLを表示させようとしています。

    開発環境 :Windows Server 2003 SP2 / VC6.0
    サーバ:Windows 2008 Server R2 / IIS7.5

    HINSTANCE hwndRet;
    hwndRet = ShellExecute(NULL, "http://www.hoge.co.jp", NULL, NULL, SW_SHOW);

    戻り値は42で、
    タスクマネージャーのプロセスを見ると、IEが起動されていることは確認できますが、
    肝心のウィンドウが表示されません。
    URLをテキストファイル名に変更しても同様に、
    プロセスは起動しますが、ウィンドウは表示されませんでした。

    そこで、以下のことを確認、試してみました。
    ・CGIは32ビット。プロセス起動されたIEとnotepadも32ビット
    ・「ファイル名を指定して実行」で当該URLを入力し、IEで表示できることは確認済み。
    ・サーバ側でShellExecuteを実行する単体で動くアプリケーションを作成・実行
     ⇒ウィンドウは表示される。
    ・アプリケーションプールを経由し、上記のアプリケーションを実行(ShellExecute)
     ⇒ウィンドウは表示されず、プロセスのみ残る。

    アプリケーションプールを通すとShellExecuteの挙動は異なるのでしょうか?

    何か関連しそうな情報があればご教示ください。

    2011年2月18日 3:28

回答

すべての返信

  • Session 0 分離 の影響です。
    • 回答の候補に設定 星 睦美 2011年3月1日 8:12
    • 回答としてマーク 星 睦美 2011年3月2日 2:05
    2011年2月18日 4:40
  • 回答ありがとうございます。

    返信が遅れまして申し訳ありません。

    Session0の分離の影響ということで、セッションIDを変更し、プロセスを起動できるよう試しています。

    現在は、CreateProcessAsUserでエラーが発生していますが、

    いずれの結果にしろ、近日中に結果をアップしたいと思います。

    2011年2月21日 3:43
  • Y.SHIINA さん、こんにちは
    フォーラム オペレーターの星 睦美です。

    佐祐里 さんの返信を参考にしていただけたようですので、今回は私から[回答としてマーク]をさせていただきました。
    引き続き回答の内容に質問がありましたら[回答としてのマークの解除]をして返信できます。

    それではY.SHIINA さんからの結果の報告もお待ちしています。
    今後ともTechNet フォーラムをよろしくお願いします。


    日本マイクロソフト株式会社 フォーラム オペレーター 星 睦美
    2011年3月2日 2:06