4

イントラネットでのみ実行されるサイトを開発しており、このイントラネットにアクセスできるコンピューターには、この実行可能ファイルがインストールされます。「[ファイル名].exe を開きますか?」というメッセージは表示されません。プロンプト。リンクをクリックすると、プログラムが実行を開始します。

Web サイトにクライアント マシン上で実行可能ファイルを実行する機能を与えることは非常に悪いことだと認識していますが、経営陣はこれについて譲歩することを拒否しています。

マシンには Windows (XP 以降) と Firefox 3 が搭載されています。

4

11 に答える 11

11

イントラネットでのみ実行されるサイトを開発しており、このイントラネットにアクセスできるコンピューターには、この実行可能ファイルがインストールされます。

これは、EXE が既にデスクトップにインストールされているということですか? ウェブサイトから起動したいだけですか?

その場合、EXE をMIME コンテンツ タイプに関連付けることができ、ユーザーがクリックすると起動します。

EXE 名のコンテンツ タイプとファイル拡張子を選択します。たとえば、次のようになります。

原因Chaos.exe
.chaos ファイル拡張子に関連付けられています
コンテンツ タイプは次のようになります: application/chaos

EXE インストールを介してファイル拡張子を EXE に関連付けます。InnoSetup を使用して、ここに表示します

[Registry]
Root: HKCR; Subkey: .chaos; ValueType: string; ValueData: CauseChaos; Flags: uninsdeletekey
Root: HKCR; Subkey: CauseChaos; ValueType: string; ValueData: CauseChaos Tool; Flags: uninsdeletekey 
Root: HKCR; Subkey: CauseChaos\DefaultIcon; ValueType: string; ValueData: {app}\CauseChaos.exe,0; Flags: uninsdeletekey
Root: HKCR; Subkey: CauseChaos\shell\open\command; ValueType: string; ValueData: "{app}\CauseChaos.exe ""%1"""; Flags: uninsdeletekey

EXE インストールを使用して、MIME コンテンツ タイプをファイル拡張子に関連付けます。

[Registry] (continued...)
Root: HKCR; Subkey: HKCR\Mime\Database\Content Type\application/chaos; ValueType: string; ValueName: Extension; ValueData: .chaos; Flags: uninsdeletevalue
于 2009-01-21T21:24:28.497 に答える
2

そこに行ったことがあります。MIMEタイプ(これを追加した時点で受け入れられた回答)は、クライアントとサーバーで多くの構成を必要とします.これはかなりの作業であり、一時ファイルなどが作成されます.

私たちの解決策は、独自の「カスタム URL プロトコル ハンドラ」を追加することでした。基本的に、URL タイプ x-our-intranet を追加し、企業アプリをその URL ハンドラーにします。これで、「x-our-intrenet:foo」をコマンドライン引数として渡すことで、どのリンクでも企業アプリが開始されます。必要なのは、MIME タイプと同様に、クライアント側のレジストリ エントリだけです。

于 2009-01-23T13:44:26.957 に答える
1

この JavaScript を試してください:

function executeCommands(inputparms)
{
// Instantiate the Shell object and invoke its execute method.

var oShell = new ActiveXObject("Shell.Application");

var commandtoRun = "c:\windows\Notepad.exe";

// Invoke the execute method. 
oShell.ShellExecute(commandtoRun, commandParms, "", "open", "1"); 
}

それに応じてブラウザのセキュリティ設定を設定する必要があります。これは IE でのみ機能します。

于 2009-01-21T21:19:16.230 に答える
0

私は残りの部分に同意します。これはもうできないと確信しています (特に Firefox では)。これは、過去にインストールされたスパイウェア/アドウェア プログラムの数です。あなたは立場を取り、経営陣にそれは不可能だと伝える必要があります.

于 2009-01-21T21:16:26.140 に答える
0

アクティブな X コントロールが最も簡単な方法です。アクティブな X コントロールをホストできるようにする Firefox 用のプラグインがあります。または、これを処理する NS プラグインを作成することもできます。

于 2009-01-21T21:16:43.783 に答える
0

これは、実行可能ファイルの Web 配置に関する古い記事です。これは Internet Explorer を使用して可能であることはわかっています (開発チームが断片化されているため、一部をサポートする必要があります)。Firefox の影響についてはわかりません。

于 2009-01-21T21:16:56.937 に答える
0

私はあなたが何を望んでいるかを完全に理解しています。私がインターネットで読んだのは、これは大きなセキュリティ違反などであると言及している人たちだけです...しかし、なぜあなたがこれを実装したいのか理解していないと思います.非常に近づいています。

私は多くの異なるユーザーアプリケーションを持っています。コール センターなど... 現在、キオスク モードで動作するロックダウン デスクトップで作業しています。ユーザーに表示されるのは、一部のコンピューター情報と IE アイコンを含むブルー スクリーンだけです。私の目標は、このページから Microsoft Office といくつかの内部クライアント/サーバー アプリを実行することです。私のユーザーが見ることができないだけで、すべてがまだそこにあるので、それは完全にうまく機能します。しかし、私はあなたと同じ問題を抱えています。私のネットワークは、MPLS、内部および外部のマネージド ルーター、ファイアウォール/ASA、および多数のセキュリティ プロフェッショナルを利用して非常に安全です。さらに、これは厳密に内部専用です。だから、私の意見では、それは完全に大丈夫です。したがって、これに対する何らかの回避策を思いついた場合は、投稿します。

于 2009-03-26T23:45:27.880 に答える
0

これが機能することを想像できる唯一の方法は、実行可能ファイルを実行するある種の ActiveX コントロールを使用することですが、Firefox でそれがどれほど実現可能かはわかりません。

これは、管理ではなく、あなたがそれを拒否するべきものの1つです。

于 2009-01-21T21:10:39.367 に答える
0

Adobe Flex / Airをご覧になることをお勧めします。これは、このモデルを念頭に置いて設計されており、固有のセキュリティ バーン ドアが開くようになっています。

于 2009-01-21T21:13:34.650 に答える
0

リンクで「file:///c:/Program Files/myprogs/myprog.exe」URL を使用すると、IE で機能していました。しかし、私はこれを長い間試していません。

上記の MIME タイプの方法を使用するか、その実行可能ファイルによって処理される特別な URI プレフィックス「chaos://myparams」を追加することをお勧めします。

于 2009-01-21T23:18:56.907 に答える
0

すでにコンピュータ上にあるアプリケーションを実行したい場合は、レジストリに登録することで実行でき、電子メール (mailto) を送信するのと同じように HTML で呼び出すことができます。

したがって、レジストリを作成するだけです。

using Microsoft.Win32;
using System;
using System.IO;
using System.Linq;

namespace WMConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Listening..");

            //Gets the current location where the file is downloaded
            var loc = System.Reflection.Assembly.GetExecutingAssembly().Location;
            if (!Directory.Exists(@"D:\Console\"))
            {
                System.IO.Directory.CreateDirectory(@"D:\Console\");
            }
            //Creates the Downloaded file in the specified folder
            if (!File.Exists(@"D:\Console\" + loc.Split('\\').Last()))
            {
                File.Move(loc, @"D:\Console\" + loc.Split('\\').Last());
            }
            var KeyTest = Registry.CurrentUser.OpenSubKey("Software", true).OpenSubKey("Classes", true);
            RegistryKey key = KeyTest.CreateSubKey("alert");
            key.SetValue("URL Protocol", "wnPing");
            key.CreateSubKey(@"shell\open\command").SetValue("", @"D:\Console\WMConsole.exe %1");
        }        
    }
}

そして、次の方法で HTML で呼び出すことができます。

<a href="alert:wmPing">Click to trigger</a>

これに関する完全な記事は次のとおりです。 https://www.codeproject.com/Articles/1168356/Run-an-EXE-from-Web-Application

于 2020-01-15T15:01:50.197 に答える