Я предполагаю, что вы хотите читать и записывать определенные файлы на компьютере пользователя, которые обычно недоступны (то есть не временные файлы или файлы в песочнице). И вы хотите сделать это с вашего веб-сервера.
Когда вы ищете кроссплатформенный, я бы пошел с Java. Учитывая, что ваши потребности просты (чтение / запись файлов из удаленных команд), вы, вероятно, можете выбрать JRE 1.4, которой уже много лет, но она установлена на ca. 98% рабочих столов ( источник ).
Вот краткий обзор того, как вы можете подойти к этому:
- Создайте Java-апплет или приложение Java Web Start, которое извлекает список команд из URL. URL может содержать любую конкретную идентификацию, которая необходима для идентификации машины, например, идентификатор пользователя (альтернативы см. Ниже).
- Ваш веб-сервер генерирует список команд, которые должен выполнить апплет - создать файл, прочитать файл, записать файл и отправить их в ответ.
- Подпишите апплет / приложение, чтобы оно могло выйти за пределы ограничений песочницы. Для этого вам необходимо получить сертификат. Подробнее об этом позже.
- Информирование и информирование пользователей о том, что делает апплет. Например. страница вашего сайта о том, почему их просят доверять вашему сертификату и каковы последствия этого.
Вы можете реализовать это как апплет или приложение, основная часть работы практически одинакова. Я говорю об апплете, но помните, что это в равной степени относится и к приложению.
Более подробно:
Апплет запрашивает список команд из URL. Чтобы воспрепятствовать попыткам использования вашего апплета на другом вредоносном сайте, вы должны использовать HTTPS, чтобы получить список команд для проверки подлинности сервера. URL должен быть жестко запрограммирован в вашем апплете, чтобы любые попытки изменить это нарушали подпись. Как вы передаете команды апплету через URL, зависит от вас, например, Вы можете использовать XML или RMI и просто отправить список команд в виде объекта.
Я упоминал использование идентификатора пользователя для идентификации машины - также возможно использование MAC-адреса машины. См. , как получить MAC-адрес хоста .
Когда у вас есть список команд, ваш апплет выполняет их с помощью API ввода / вывода java-файла. См. Файл , FileReader / FileWriter в javadocs. Вы включаете соответствующую регистрацию, чтобы действия апплетов могли быть проверены позже при необходимости. После того, как апплет выполнил команды, он отправляет результат команд обратно на сервер в виде операции POST или другого вызова метода RMI, если вы установили RMI.
Если вы хотите непрерывно отправлять команды с сервера, тогда апплет может опрашивать URL / регулярно вызывать метод RMI. Таймер может помочь с этим.
При ошибках связи клиенту потребуется запрашивать список команд более одного раза. Таким образом, каждый раз, когда вы создаете список команд с сервера, ему присваивается идентификатор. Сервер выдает один и тот же список с тем же идентификатором, пока не получит подтверждение от апплета о том, что команды были выполнены.
Чтобы подписать апплет, вы должны получить сертификат rsa в центре сертификации. Вы можете подписаться самостоятельно, но затем вы открываете дверь другим, изменяя ваше приложение и выдавая себя за сертификат. Подробности получения и использования сертификатов приведены здесь .
Если вы не знаете Java, то все это может не иметь большого смысла, и это не тривиальный проект, с которого стоит начать, особенно учитывая последствия для ваших пользователей, если ваша реализация имеет дыры и дефекты.
Может быть, стоит проявить осторожность: хотя вы можете это сделать, это не обязательно означает, что вы должны это делать. Я предполагаю, что большинство опытных пользователей не одобрит использование этого приложения и не примет сертификат. Кроме того, существует вина - если ваше приложение случайно удаляет критический файл из-за ошибки, неправильной конфигурации, человеческой ошибки и т. Д., Как вы будете к этому готовы?