6


0

クライアント側でバッチファイルを実行する方法 exeファイル? クライアント側でプレインストールされたプログラムを開くだけ?

{空} [編集]

ActiveXに関しては、私が試した

var activeXObj = new ActiveXObject( "Shell.Application"); activeXObj.ShellExecute( "C:\\ WINDOWS \\ NOTEPAD.EXE"、 ""、 ""、 "open"、 "1");

しかしこれはうまくいきません。 助言がありますか?

7 Answer


37


Javascriptから? できません。 これはセキュリティ上のリスクです。 それについて考えてください - あなたはすべてのウェブサイトがあなたのPC上でプログラムを実行できるようにしたいですか?


11


JavaScriptを使用してブラウザウィンドウから外部プログラムを起動するということですか。 あなたはそれをすることができる方法はありません! これは非常に安全なブラックホールです。


8


    function RunEXE(prog) {
        var oShell = new ActiveXObject("WScript.Shell");
        oShell.Run('"' + prog + '"', 1);
    }


6


本当にクライアントを制御しているのであれば、SSHのようにクライアント側にリモートデーモンサービスをインストールしたいと思うかもしれません。

PS。 しかし、あなたの "サーバーコード"を通してそれを呼び出してください。

更新しました:

落胆しないでください。 あなたは絶対に安全な方法でそれをすることができます。

  1. 最初にあなたのアプリケーションを呼び出すタスクを処理するデーモンサービスがクライアントに必要です。 個人的には、CまたはDelphiを使用して、単純なrpc-serverをwindows-serviceとして構築したいと思います。しかし、他の多くの種類のサーバーも仕事をすることができます(SSH、Apache、Telnet)。

  2. 次に、ユーザーが自分のサービスを適切な認証で「登録」してそのサービス(パスワード、セキュリティキー)を呼び出すことを許可するWebページを作成します。

  3. すでに登録されているクライアント上のWebページからアプリケーションを起動したい場合は、サーバーにajax呼び出し(xmlhttprequest)を行ってください。

  4. サーバーは、登録されている情報で要求元のIPアドレスを検証する必要があります。

  5. 次に、登録されている情報を使用してクライアントにリモートコマンドを呼び出します。

このスキームが機能しない可能性があるというネットワーキングの状況があるかもしれません。 ただし、実行環境を本当に管理している場合は、常にいくつかの回避策があります。


5


クライアントをhttp://yourserver/batchfile.batにリダイレクトします。 いくつかのブラウザでは、これはバッチファイルを実行するようにユーザに促します。


3


問題がブラウザに表示されているのがバッチファイルである場合、HTTPヘッダに Content-Type`と Content-Disposition`を設定する必要があるので、ユーザはブラウザを使わずにファイルを保存(または実行)するよう促されます。表示してください。

ユーザーからのOKなしでファイルを実行することはできませんが、これは問題にならないはずです。


0


基本的には、できません。 クライアント側で何かを起動する必要がある場合、別のメカニズム、おそらく何らかのセキュリティが組み込まれたメカニズムが必要になります。 前回の投稿でpsexec(http://technet.microsoft.com/ja-jp/sysinternals/bb897553.aspx)について説明しましたが、これは明らかにターゲットシステムに対する適切な権限がある場合にのみ機能し、ブラウザの完全に外部にあります。

基本的に、あなたが求めているのは、BIG、BIG、それが簡単にできたなら問題です。

あなたはActiveXを調べるかもしれませんが、私は最近ActiveXオブジェクトにどんな限界があるのか​​わかりません(私はそこに限界があることを知っています、しかしあなたはそれらの中で働くことができる)。