Jak uruchomić EXE ze strony www (asp.net)

Jest to wewnętrzna aplikacja internetowa, w której chcielibyśmy, aby strony internetowe zawierały linki do kilku narzędzi, które są Win32 EXE. Byli są przez nas zaufani i produkowani. (nie obchodzi mnie, czy pyta, czy jest ok, aby uruchomić lub zapisać). Próbowałem bezpośredniego linku (np. C:\notepad.exe), który działa tylko lokalnie. (Będzie to udział w sieci). Wypróbowany plik: / / / i nie działa. IE7 jest potrzebna przeglądarka.

Author: JoeJoe, 2009-05-27

8 answers

A może coś w stylu:

<a href="\\DangerServer\Downloads\MyVirusArchive.exe" 
  type="application/octet-stream">Don't download this file!</a>
 29
Author: Cerebrus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-27 17:09:08

Zakłada się, że exe znajduje się gdzieś na komputerze użytkownika:

<a href="javascript:LaunchApp()">Launch the executable</a>

<script>
function LaunchApp() {
if (!document.all) {
  alert ("Available only with Internet Explorer.");
  return;
}
var ws = new ActiveXObject("WScript.Shell");
ws.Exec("C:\\Windows\\notepad.exe");
}
</script>

Dokumentacja: ActiveXObject, Metoda Exec (Windows Script Host) .

 35
Author: JLopez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-05 23:39:08

Możesz zobaczyć, jak iTunes to robi, używając Fiddlera, aby śledzić akcję podczas korzystania z linku: http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=80028216

  1. pobiera plik js
  2. w systemie windows: plik js określa, czy iTunes został zainstalowany na komputerze, czy nie: wyszukuje komponent przeglądarki activeX if IE, lub wtyczkę przeglądarki if FF
  3. Jeśli iTunes jest zainstalowany, przeglądarka jest przekierowywana na adres URL ze specjalnym transportem: itms://...
  4. przeglądarka wywołuje obsługę (dostarczoną przez iTunes exe). Obejmuje to uruchamianie exe, jeśli nie jest już uruchomiony.
  5. iTunes exe używa reszty specjalnego adresu url, aby pokazać konkretną stronę użytkownikowi.

Zauważ, że exe, po zainstalowaniu, zainstalowane programy obsługi protokołu URL do transportu "itms"z przeglądarkami.

Nie jest to prosty projekt inżynieryjny do powielenia, ale zdecydowanie do-able. Jeśli to zrobisz, rozważ zrobienie odpowiednie oprogramowanie open source.

 26
Author: Larry K,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-05 23:13:24

W systemie windows określony protokół dla aplikacji może być zarejestrowany w rejestrze. W tym msdn doc pokazuje rejestrowanie aplikacji do schematu URI.

Na przykład alert plików wykonywalnych.exe ' ma być uruchomiony. Poniższy przedmiot można zarejestrować.

HKEY_CLASSES_ROOT
   alert
      (Default) = "URL:Alert Protocol"
      URL Protocol = ""
      DefaultIcon
         (Default) = "alert.exe,1"
      shell
         open
            command
               (Default) = "C:\Program Files\Alert\alert.exe"

Następnie możesz napisać html do testu

<head>
    <title>alter</title>
</head>

<body>
    <a href="alert:" >alert</a>
<body>
 8
Author: chenatu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-13 09:11:18

Jako część rozwiązania , które zasugerował Larry K, Rejestracja własnego protokołu może być możliwym rozwiązaniem. Strona internetowa może zawierać prosty link do pobrania i zainstalowania aplikacji - która następnie zarejestruje własny protokół w rejestrze systemu Windows.

Strona internetowa zawierałaby wtedy linki z parametrami, które spowodowałyby otwarcie programu registerd i przekazanie do niego wszelkich parametrów określonych w linku. Jest dobry opis jak to zrobić to na MSDN

 3
Author: Community,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:50

Czy próbowałeś akcji UNC ?

\\server\share\foo.exe

 1
Author: Andrew Hare,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-27 17:06:54

Mówisz, że masz problem z wstawieniem na stronie linku do pliku, który ma ... exe extension?

Jeśli tak jest, to zrób krok w tył. Wyobraź sobie, że plik ma .rozszerzenie htm, czylirozszerzenie css. Jak można to ściągnąć? Jeśli jest to dowiązanie statyczne, wtedy odpowiedź jest jasna: plik musi być w docroot dla ASP.NET app. IIS + ASP.NET serwuje wiele rodzajów treści: .pliki htm,pliki css,Pliki js, Pliki Obrazów, implicite. Wszystkie te pliki są gdzieś pod docroot, który domyślnie jest c:\inetpub\wwwroot, ale dla webapp jest z pewnością coś innego. Fakt, że plik, który chcesz ujawnić, ma .exe extension nie zmienia podstawowych praw fizyki IIS. Exe musi żyć pod docroot. Udostępnianie sieciowe może działać w niektórych przeglądarkach.

Alternatywą jest oczywiście dynamiczny zapis zawartości pliku bezpośrednio do odpowiedzi.OutputStream. W ten sposób nie potrzebujesz.exe być w docroot, ale to nie jest bezpośredni link do pobrania. W tym scenariuszu plik może zostać pobrany za pomocą kliknięcia przycisku.

Coś takiego:

    Response.Clear(); 
    string FullPathFilename = "\\\\server\\share\\CorpApp1.exe";
    string archiveName= System.IO.Path.GetFileName(FullPathFilename);
    Response.ContentType = "application/octet-stream";
    Response.AddHeader("content-disposition", "filename=" + archiveName);
    Response.TransmitFile(FullPathFilename);
    Response.End();
 1
Author: Cheeso,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-28 01:32:33

Jeśli aplikacje są C#, możesz użyć ClickOnce deployment, co jest dobrą opcją, jeśli nie możesz zagwarantować, że użytkownik będzie miał aplikację, jednak będziesz musiał ponownie zbudować aplikacje z opcjami wdrażania i pobrać trochę kodu boilerplate z każdego projektu.

Możesz również użyć Javascript .

LUB możesz zarejestrować aplikację obsługującą nowy protokół internetowy , który możesz zdefiniować. Może to być również protokół "wyboru aplikacji" , więc za każdym razem, gdy aplikacja jest kliknij go link do strony na nowym protokole, cała obsługa tego protokołu jest następnie przekazywana do "aplikacji wyboru", która używa argumentów, aby znaleźć i uruchomić aplikację na komputerze klienckim.

HTH

 1
Author: Dead.Rabit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:19