2009-05-26 3 views
1

どうすればasp.netページからwin.exeを実行できますか?どうすればasp.netページからwin.exeを実行できますか?

このコードは私のエラー:システムがファイルを見つけることができませんが、あなたがそこに掲載のコードは、Webサーバー上でを実行していることを覚えておいてください

System.Diagnostics.Process process1 = new System.Diagnostics.Process(); 

      process1.StartInfo.WorkingDirectory = Request.MapPath(@"C:\"); 

      process1.StartInfo.FileName = Request.MapPath("WindowsApplication1.exe"); 
      process1.Start();

答えて

4

を指定しました。そうではなく、はユーザーのマシン上で実行するできません。それはウェブをかなり役に立たなくするのに十分な意味を持つ大きなセキュリティ問題—でしょう。

それはあなたの意思だ場合は、念のあなたのasp.netアカウント—が正常に適切な権限を持っている—セキュリティ上の理由から、アクセスのための非常に制限された権限で実行し、要求されたプログラムを実行するために信頼していることを確認する必要があります。さもなければあなたは何か別のことをする必要があります。

0

最初にダウンロードし、それを実行するよりもされている。この方法の応用では、この1

System.Diagnostics.Process process1 = new System.Diagnostics.Process(); process1.StartInfo.FileName = "C:\WindowsApplication1.exe";
process1.Start();

を試してみてください。私はそれがサーバーから実行されるとは思わない。

サーバーから実行する場合は、フラッシュライトまたはsilverlight/moonlightでアプリケーションを作成します。

+2

うまく機能しているです。 –

+0

私は同じような気持ちがあります。 – Sharique

0

あなたは何をしようとしていますか?

はここにあなたの目標は、それはあなたが、ユーザーがそのページを閲覧した場合、サーバー上で実行したいだけのいくつかの.EXEなら

(あなたがところでこれを行うことはできません)、クライアントコンピュータ上でそれを実行することです(私はこれが悪い考えである理由から始めるつもりもありません)、あなたはいくつかばかげたことをしています。

あなたのファイル名の周囲にRequest.MapPathの必要はありません。

また、あなたのWebサーバアイデンティティアカウントにアクセスし、ファイルを実行する権限を持っていることを確認する必要があります

2

すでに使用しているので、あなたは、あなたが何をしているかについてRequest.MapPathを()は必要ありません。ローカルパス。 Request.MapPath()は、アプリケーション相対URL(「〜/ test.htm」など)をローカルパス(「c:\ inetpub \ wwwroot \ myapp \ test.htm」など)に変換するために使用されます。

アプリケーションは、サーバー上のc:\ WindowsApplication1.exe に存在しますか?

0

Request.MapPathは相対URLをとり、(サーバー上の)ローカルファイル名を返します。 Request.MapPath("test.aspx")C:\inetpub\wwwroot\MyApp\Test.aspxを返すことがあります。

したがって、基本的に 'ウェブページ'は、WindowsApplcation1.exeというウェブページと同じディレクトリにあるサーバー上のアプリケーションを探します。

最後に、このWindowsアプリケーションがクライアント上で実行されることを期待している場合、これは動作しません。これはサーバー上でアプリケーションを実行するためです。クライアント上で自動的にファイルを実行することは許可されません。これはセキュリティ上のリスクとなるためです。

0

私はそれをやっている:

var client = new Client(Int32.Parse(Session["uid"].ToString())); 
    var genReceipt = new Process(); 
    genReceipt.StartInfo.FileName = "Chitanta_unit.exe"; 
    genReceipt.StartInfo.WorkingDirectory = @"C:\chitanta_unit\"; 
    genReceipt.StartInfo.Arguments = client.ClientID.ToString(); 
    genReceipt.Start(); 
    genReceipt.WaitForExit(); 
    if (genReceipt.ExitCode == 0) 
    { 
     Response.Redirect("~/subscriber/ch/" + client.GetChitantaFilename()); 
    } 
    genReceipt.Close(); 

Clientクラスは、顧客との操作が含まれています。 サーバーの "C:\ chitanta_unit \"パス。サーバーはすべて私のものです=) 私はそれをclientID引数で実行しました。 そしてChitanta_unit.exeはConsoleApplication

彼が、これは「魔法」のクライアントブラウザ上でexeファイルを実行します考えているのに、私は悪い感じがしました

関連する問題