none
ASPでサーバーの中のEXEファイルを実行する方法

    質問

  • ASPでサーバーの中にあるcalc.exeを起動させるとします。

    下のようにプログラムしてVS.NETでデバッグ開始にすると、calc.exeはうまく起動してくれます。

    ところが、実際のドメインで実行するとAlertの部分は実行しますがcalc.exeは起動しません。

    これはどうしてでしょうか。

    Alertの部分は実行するのだから、読みに行っているのはたしかなんですが、

    calc.exeは実行できません。

     

     

     

    Partial Class EXE


        Inherits System.Web.UI.Page

     

    Private WithEvents process1 As System.Diagnostics.Process


    Private Sub InitializeComponent()

        Me.process1 = New System.Diagnostics.Process

        Me.process1.StartInfo.Domain = ""
        Me.process1.StartInfo.LoadUserProfile = False
        Me.process1.StartInfo.Password = Nothing
        Me.process1.StartInfo.StandardErrorEncoding = Nothing
        Me.process1.StartInfo.StandardOutputEncoding = Nothing
        Me.process1.StartInfo.UserName = ""

    End Sub


        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

     

            Call InitializeComponent() 'process1

     

            Me.process1.StartInfo.FileName = "C:\Web\calc.exe"
            Me.process1.StartInfo.Arguments = ""
            Me.process1.Start()
            Me.process1.CloseMainWindow()

     

           Call Alert_S("起動しました")

     

        End Sub

     

        Protected Sub Alert_S(ByVal mes As String)

            Dim csname As String = "PopupScript"
            Dim cstype As Type = Me.GetType()  
            Dim cs As ClientScriptManager = Page.ClientScript 
            Dim cstext As String

            cstext = "alert('" & mes & "');"

            cs.RegisterStartupScript(cstype, csname, cstext, True)

        End Sub

     

    End Class
    2007年8月19日 11:39

すべての返信

  • 他のトピックに、

    「バックグランドで実行されていて視覚的に見えない」

    と似たようなことが書いてありました。

    タスクマネージャーで見つかりませんか?

    2007年8月20日 7:44
  • コメントありがとうございます。

     

    タスクマネージャーで見てみましたが、やはり起動していませんでした。

    たぶん、セキュリティーの関係だと思うのですが、exeファイルの置かれている、フォルダーはASPNETがフルコントロールにしてあります。

     

    VS.NETのデバッグでは動いても、実際のドメイン上では動かないのは、なにかセキュリティ上のことでexeファイルは実行できないようになっているんでしょうね。

     

    ASPで、サーバーにあるEXEファイルを実行する方法があれば便利なのですが。

    2007年8月21日 11:20
  • 1年以上前の話ですが、次のように記述した ASPX をサーバー上に置き、

    クライアントからブラウザを使ってそれにアクセスし、EXE を起動するという実験をしました。

    <%@ Import Namespace="System.Diagnostics" %>
    <%@ Import Namespace="System.IO" %>
    <html>
    <body>
      Dim proc As Process =   Process.Start(Server.MapPath(Path.Combine(Request.ApplicationPath, "test.exe")))
      If Not proc Is Nothing Then
        Response.Write(proc.Id.ToString())
      Else
        Response.Write("Nothing")
      End If
    </body>
    </html>

    結果は成功で、その後少なくとも 24 時間起動し続けました。

    2007年8月22日 4:07
  • コメントありがとうございます。

    さっそく教えていただいた方法でやってみました。

     

    結果はまえと同じです。デバッグでは動きますが、ドメインではうごきません。

    ただひとつわかったことは、ドメインでやってみたとき Response で、Nothingではなく数字が返ってきたので、

    プロセス自身は実行されたのかもしれません。

    ただそれが、画面にはでてきません。前の方が言われたように、裏で実効されているのか、

    タスクマネージャーで見ましても、やはり実行されていません。

    私のパソコンの設定が特殊になっているのでしょうか。

    セキュリティソフトを切ってやってみても同じです。

    あなたのPCで動いたのであれば、普通はこのコードで動くのでしょうね。

    なにがいけなにのかわかりません。

     

     

     

    2007年8月22日 10:12
  • いえ、私の PC ではありません。
    いわゆるレンタル サーバーにファイルを置いて、IE6 からアクセスしました。
    ですのでデスクトップの確認はできませんし、セキュリティ関連の設定もどうなっているのか不明です。

    とりあえず起動したことは確かですが。
    2007年8月22日 11:03
  • すいません。私の間違いでした。初めの方が言われたとおり、裏で動いていました。タスクマネージャーでみるとプロセスのところに、calc.exeがありました。ただ、これを表で動いてもらうにはどうすればいいのでしょうか?

     

    バカな方法なのですが、calc.exeを起動させるプログラムを作って、それをASPで起動させてみました。

    新たに作ったプログラムは、やはり裏で起動しましたが、それが起動させた、calc.exeもやはり裏で起動してしまいました。

    裏で起動したソフトから起動させられたソフトは、これも裏で起動してしまうのですね。どうすれば見えるように起動してくれるのでしょうか。

     

    2007年8月22日 11:38
  • 実際のところ、見えるようにすることができるかどうか、私にはわかりません。
    ASP .NET にはあまり詳しくないもので……

     

    ところで(仮にできるものとして)、
    その、サーバーのデスクトップに表示されたアプリケーションを、
    いったい誰が操作するのでしょう。サーバーの管理者ですよね。
    それなら直接起動すればよいのでは?

    2007年8月22日 23:04
  • ASPで、EXEファイルを動かしたかったのは、今まで作ったソフトを、

    外部からコマンドラインの引数でいろんな操作ができないかと考えたからです。

    ただ、画面に表示するような、プログラムはうまくいきませんが、

    裏で動いていても、画面表示なしでの動作は可能なようです。

    考えてみれば、ASPからEXEファイルを起動するときは、こちらが家にいないか、

    PCを見ていないときなので、画面に見えるような、操作は必要ないです。

    ただ、画面表示に関する部分が使えないと、家に帰ってパソコンの画面を見とき、

    何か表示しておきたい、といったような操作をしたいときに不便ですね。

     

    しかし、ASPでEXEファイルを起動させると、なぜ裏で起動するのでしょうか。

    わたしのPCだけ特別なのでしょうか。

     

     

     

    2007年8月23日 0:37