2011-02-09 6 views
0

IIS上でホストされているASP.NETサイトからクライアントマシン上の実行可能ファイルを開くことはできますか?ASP.NETサイトから.EXEファイルを開くにはどうすればよいですか?

私は、ASP.NETに次のコードを使用してみましたが、次のコードをJavaScriptでも

Process notePad = new Process(); 

notePad.StartInfo.FileName = "notepad.exe"; 
notePad.StartInfo.Arguments = @"E:\abc.txt"; 

notePad.StartInfo.CreateNoWindow = false; 
notePad.StartInfo.UseShellExecute = false; 
notePad.StartInfo.RedirectStandardOutput = false; 

notePad.Start(); 

とを:

function Launch() { 
    var w = new ActiveXObject("WScript.Shell"); 
    w.run('notepad.exe'); 
    return true; 
} 

しかし、両方のスニペットは、ときにのみ、サイトファイルを開きます。 IISでホストされていません。

ご協力いただきまして誠にありがとうございます。前もって感謝します。

+1

なぜこれをやりたいのですか?これが受け入れられるオプションであっても、あなたのアプリケーションとセキュリティに対する敬意が深刻に崩れています。 –

+0

私はコーディに同意してはいけません。しかし、私はまた、多くの環境で、ユーザー(主に企業ユーザー)が、このようなことをしたようなものだと理解しています。ただし、レスポンスストリームを使用してファイルデータを転送し、オペレーティングシステム(Windows)が任意のファイルを適切なプログラムに関連付けて処理できるようにする必要があります。 – bitxwise

+0

それは実際には要件として、私は与えている。私はそれが本当に可能かどうかを知りたい(セキュリティ問題を無効にする)。また、その実行ファイルが共有ドライブにある場合は1つのポイントを持って、それは可能ですか?それは可能だとは思わない。 –

答えて

2

あなたははかなりの下でどのような状況をクライアント(ブラウザを実行しているコンピュータ)上の実行可能ファイルを起動することができません...

に見えるサーバーに住んでC#であるあなたのコード実際にサーバー上でNotepadのインスタンスを開いているとメモ帳を実行しようとしているようです...クライアントではありません。

クライアントがあなたにメモ帳(大きなif)を実行する権限を与えることを許していたなら、マシンがWindows PCでない場合は何かを表示することもできます。最初の場所)

+0

私は言うが、十分なセキュリティ設定を解除し、各クライアントマシンの信頼できるソースに十分な参照を追加すると、メモ帳を開くことができるかもしれない。 – davidsleeps

+1

しかし、しないでください。 Webアプリケーションとデスクトップアプリケーションには理由があります。 –

+0

私はそれがすべての可能な方法では実行不可能であることを暗示しようとしていましたが、技術的に(技術的に)可能です... – davidsleeps

1

あなたはJavascriptを使用してみたが、IEユーザーのためにのみ動作することができます

をハードコーディング削除

<html> 
<head runat="server"> 
    <title>Run Executable HTA</title> 

    <script language="javascript" type="text/javascript"> 
    function RunEXE(prog) 
    { 
     var oShell = new ActiveXObject("WScript.Shell"); 
     oShell.Run('"'+prog+'"', 1); 
    } 
    </script> 
</head> 
<body> 
    <input id="btnMyButton" onClick="RunEXE('notepad.exe')" type="button" value="Notepad" /> 
</body> 
</html> 

EDIT

EDIT

OPはDesign.exeを使用しようとしているような答えを更新します。

私が言ったように、私はこれをしたくないですが、それが必要なので、私たちができることを見てみましょう。 Design.exeを開いて、読み込むファイルを渡す代わりに、Design.exeファイルに独自のファイル拡張子(.txt、.des)があると仮定すると、おそらくResponseストリームを使用してファイルを転送できます。ユーザーがダウンロードを開くと、Windows(それはOSと仮定します)が自動的にDesign.exeを使用してファイルを開きますか?

+1

**パスをメモしないでください** –

+0

真面目に、それはコンセプトの例です... – bitxwise

+1

ええ、それは一般的に繰り返される、間違いではあるが、概念の例です。これを例として示すと、他の開発者が同じミスを犯すことを奨励するだけです。大多数の人がオンラインで見つけたコードをコピー&ペーストするだけの悲しい現実です。このような例は、コミュニティに有益でも良いものでもありません。 –

0

絶対にこれを行う必要がある場合は、と私はあなたがいない示唆...

オプション1:
あなただけのIEをサポートする必要がある場合は、1つのオプションを持つ小さなActiveXコントロールを構築することですボタンを押して、目的のプログラムに展開し、Webページに埋め込みます。

オプション2:
あなたはdesign.exeが何であれで特定のファイルを開こうとしている、とユーザーがあなただけ置くことができるあなたは自分のシステム上でそのアプリに登録されて開きたいファイルの種類を持っている場合Webページ上の適切な拡張子を持つファイルにリンクすると、そのファイルを含むアプリケーションが開きます。

+0

オプション2を試した可能性があります。サイトの設定でファイル拡張子を追加しました。しかし、アプリケーションのウィンドウは起動しません。プロセスはバックグラウンドでのみ実行されます(タスクマネージャで表示)。 –

+0

私はあなたがウェブサイトの仕組みを読んで恩恵を受けるかもしれないと思います。 Webサーバー上で行った変更は、クライアント上の動作に影響を与えません。ファイルタイプがUSER'S(クライアント)マシンに登録されていることを確認する必要があります。サーバーではありません。 – JohnFx

+0

はい、私はそれを知っていますが、私はそれを試みました。オプション1の場合、ActiveXで実行可能ファイルのリファレンスを追加すると、アプリケーションを直接起動するのでしょうか? –

関連する問題