Я бы сделал это:
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;
Как насчет чего-то вроде:
<a href="\\DangerServer\Downloads\MyVirusArchive.exe"
type="application/octet-stream">Don't download this file!</a>
В 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>
Вы пробовали UNC-ресурс ?
\\server\share\foo.exe
если приложения на C #, вы можете использовать развертывание ClickOnce , что является хорошим вариантом, если вы не можете гарантировать, что у пользователя будет приложение, однако вам придется пересобрать приложения с вариантами развертывания и получить некоторый шаблонный код из каждого проекта.
Вы также можете использовать Javascript .
Или вы можете зарегистрировать приложение для обработки нового веб-протокола , который вы можете определить. Это также может быть протокол «выбора приложения», поэтому при каждом нажатии на приложение оно будет ссылаться на страницу вашего нового протокола, а вся обработка этого протокола передается в ваше «приложение выбора», которое использует аргументы для поиска и запуска. приложение на клиентском ПК.
НТН
Вы можете увидеть, как iTunes это делает, используя Fiddler для отслеживания действий при использовании ссылки: http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=80028216
Обратите внимание, что исполняемый файл при установке устанавливает обработчики протоколов URL для "itms" переносится с браузерами.
Не простой инженерный проект для дублирования, но определенно выполнимый. Если вы продолжите это делать, рассмотрите возможность создания соответствующего программного обеспечения с открытым исходным кодом.
Вы говорите, что не можете вставить на веб-страницу ссылку на файл с расширением .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();
В рамках решения, которое предложил Ларри К, возможным решением может быть регистрация собственного протокола. Веб-страница может содержать простую ссылку для загрузки и установки приложения - которое затем зарегистрирует свой собственный протокол в реестре Windows.
Затем веб-страница могла бы содержать ссылки с параметрами, которые приводили бы к открытию зарегистрированной программы и передаче ей любых параметров, указанных в ссылке. Хорошее описание того, как это сделать, есть на MSDN