1

asp.netWebサイトからの外部アプリケーションの起動について質問があります。今ではそれを防ぐためのセキュリティ対策が講じられていると思います。それは良い習慣ではないことはわかっていますが、私が開発しているイントラネットサイトでは、それを実行できると非常に便利です。

これまでのところ、サーバーをローカルで(デバッグで)実行している場合に外部アプリを起動できる場所を見つけましたが、正常に動作します。ファイルをWebサーバーに公開すると、機能しなくなります。ファイルパスが異なると思いますが、ローカルファイルが存在するかどうかを確認するにはどうすればよいですか?または私はできますか?

これが私のコードです:

//the actual launch button on the page
protected void btnLaunchTnet_Click(object sender, EventArgs e)
{
    string tnetpath = "c:\path\tnet.exe";      
    RunProcess(tnetpath, "");
}


private void RunProcess(string cmd, string arguments)
{
    System.Diagnostics.Process p;
    p = new System.Diagnostics.Process();

    p.StartInfo.FileName = cmd;

    if (arguments.Length > 1)
    {
        p.StartInfo.Arguments = arguments;
    }
    p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    p.StartInfo.RedirectStandardOutput = false;
    p.StartInfo.UseShellExecute = false;
    p.Start();
}

また、アプリを起動するボタンを無効または有効にするために使用する「このファイルが存在するかどうかを確認する」という簡単な方法もあります。

private bool CheckFileExists(string filepath)
{
    FileInfo SetupPath = new FileInfo(filepath);
    return SetupPath.Exists;
}
4

3 に答える 3

1

ActiveXコントロールを使用する方法を知っていますが、InternetExplorerでのみ機能します。

この投稿をチェックしてください。

于 2012-04-19T18:33:17.677 に答える
0

クライアントマシンでプログラムを起動したいようです。

あなたはそれをすることはできません。

同じドメインにいてWindows認証を使用している場合は、偽装とSysInternalsPsExec.exeを使用してプロセスをリモートで起動できるはずです。

于 2012-04-19T18:29:00.743 に答える
0

私は@Slaksが書いたものだけを書いていますが、もっと多くの単語を使っています。

Webページを参照すると、次のことが起こります。

  1. Webブラウザプログラムは、Webサーバープログラムへのネットワーク接続を確立します。
  2. Webブラウザーは、HTTP要求をWebサーバーに送信します。
  3. WebサーバーはHTTPリクエストの情報を処理します。
  4. WebサーバーはHTTP応答をブラウザに送り返します。
  5. ブラウザプログラムは、HTTP応答に含まれるHTMLを表示します。

この例のコードは、上記の手順3で実行されるコードです。

これは、プロセスを希望どおりに起動できない理由を理解するのに十分な情報ですが、表示されない場合はお知らせください。詳しく説明します。

于 2012-04-19T18:51:32.607 に答える