Как запустить EXE от Веб-страницы (asp.net)

Я бы сделал это:

function randomInt(min, max) {
    return Math.round(min + Math.random()*(max-min));
}
var index = {}, numbers = [];
for (var i=0; i<8; ++i) {
    var number;
    do {
        number = randomInt(1, 100);
    } while (index.hasOwnProperty("_"+number));
    index["_"+number] = true;
    numbers.push(number);
}
delete index;
28
задан JoeJoe 27 May 2009 в 17:04
поделиться

7 ответов

Как насчет чего-то вроде:

<a href="\\DangerServer\Downloads\MyVirusArchive.exe" 
  type="application/octet-stream">Don't download this file!</a>
29
ответ дан Cerebrus 14 October 2019 в 09:27
поделиться

В Windows указанный протокол для приложения может быть зарегистрирован в Реестре. В этом msdn doc показана регистрация приложения в схеме URI.

Например, должны быть запущены исполняемые файлы «alert.exe». Следующий элемент может быть зарегистрирован.

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"

Затем вы можете написать HTML для проверки

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

<body>
    <a href="alert:" >alert</a>
<body>
11
ответ дан chenatu 14 October 2019 в 09:27
поделиться

Вы пробовали UNC-ресурс ?

\\server\share\foo.exe

1
ответ дан Andrew Hare 14 October 2019 в 09:27
поделиться

если приложения на C #, вы можете использовать развертывание ClickOnce , что является хорошим вариантом, если вы не можете гарантировать, что у пользователя будет приложение, однако вам придется пересобрать приложения с вариантами развертывания и получить некоторый шаблонный код из каждого проекта.

Вы также можете использовать Javascript .

Или вы можете зарегистрировать приложение для обработки нового веб-протокола , который вы можете определить. Это также может быть протокол «выбора приложения», поэтому при каждом нажатии на приложение оно будет ссылаться на страницу вашего нового протокола, а вся обработка этого протокола передается в ваше «приложение выбора», которое использует аргументы для поиска и запуска. приложение на клиентском ПК.

НТН

1
ответ дан Community 14 October 2019 в 09:27
поделиться

Вы можете увидеть, как iTunes это делает, используя Fiddler для отслеживания действий при использовании ссылки: http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=80028216

  1. Он загружает файл js
  2. В Windows: файл js определяет, был ли установлен iTunes на компьютер или нет: ищет компонент браузера activeX, если IE, или плагин браузера, если FF
  3. Если iTunes установлен, тогда браузер перенаправляется на URL-адрес со специальным транспортом: itms: // ...
  4. Браузер вызывает обработчик (предоставляется iTunes exe). Это включает в себя запуск исполняемого файла, если он еще не запущен.
  5. iTunes exe использует остальную часть специального URL-адреса для отображения определенной страницы для пользователя.

Обратите внимание, что исполняемый файл при установке устанавливает обработчики протоколов URL для "itms" переносится с браузерами.

Не простой инженерный проект для дублирования, но определенно выполнимый. Если вы продолжите это делать, рассмотрите возможность создания соответствующего программного обеспечения с открытым исходным кодом.

27
ответ дан 28 November 2019 в 00:38
поделиться

Вы говорите, что не можете вставить на веб-страницу ссылку на файл с расширением .exe?

Если это так, сделайте шаг назад. Представьте, что файл имеет расширение .htm или .css. Как сделать это загружаемым? Если это статическая ссылка, то ответ очевиден: файл должен находиться в корневом каталоге для приложения ASP.NET. IIS + ASP.NET обслуживает множество видов содержимого: файлы .htm, файлы .css, файлы .js, файлы изображений, неявно . Все эти файлы находятся где-то под docroot, который по умолчанию c: \ inetpub \ wwwroot, но для вашего веб-приложения это определенно другое. Тот факт, что файл, который вы хотите открыть, имеет расширение .exe, не меняет основных законов физики IIS. EXE должен жить под docroot. Совместное использование сети может работать для некоторых браузеров.

Альтернативой, конечно же, является динамическая запись содержимого файла непосредственно в Response.OutputStream. Таким образом, вам не нужно, чтобы файл .exe находился в вашем корневом каталоге, но это не прямая ссылка для загрузки. В этом случае файл может быть загружен нажатием кнопки.

Примерно так:

    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
ответ дан 28 November 2019 в 00:38
поделиться

В рамках решения, которое предложил Ларри К, возможным решением может быть регистрация собственного протокола. Веб-страница может содержать простую ссылку для загрузки и установки приложения - которое затем зарегистрирует свой собственный протокол в реестре Windows.

Затем веб-страница могла бы содержать ссылки с параметрами, которые приводили бы к открытию зарегистрированной программы и передаче ей любых параметров, указанных в ссылке. Хорошее описание того, как это сделать, есть на MSDN

4
ответ дан 28 November 2019 в 00:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: