![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сервис + приложение (обмен данными)
VirEx(home) © (2009-09-14 11:52:00)есть сервис (запускаемый допустим с правами system) работающий с SQLite базой
есть приложение (с ограниченными правами), которое должно обмениватся с сервисом информацией:
- добавление данных в базу
- выборка данных из базы
и т.п.
как реализовать "общение" приложения с сервисом?
сервис и приложение работают на одной машине, однако хотелось бы работа с сервисом из удаленной машины в локальной сети
Dennis I. Komarov (2009-11-06 14:25:00) [1]
> но вываливать диалоговые окна
"А хвостатым документов вообще не положено" (С)
Медвежонок Пятачок (2009-11-06 14:19:00) [2]ничего странного
сервис должен работать автономно.
максимум что можно - реагировать на запросы интерактивного юзера.
но вываливать диалоговые окна по своей инициативе - никогда.
VirEx(home) (2009-11-06 11:05:00) [3]
> [57] Dennis I. Komarov © (05.11.09 12:32)
> А вообще, больно нехорошо все это пахнет...
это диплом :)
Dennis I. Komarov (2009-11-05 12:32:00) [4]
> я тоже за http интерфейс, но в этом совершенно не разбираюсь
> надо учить
это наименьшее из того, что придется учить
> сервис автоматизирующий какие-либо действия записанные в
> скрипте, притом действия могут выполнятся вне зависимости
> от того есть ли в системе пользователь
Сервис не сможет интерпритировать твои скрипты из под разных учеток. Тебе нужен интерпритатор, который будет запускатся сервиром под определенной учеткой и выполнять уже определенный скрипт...
А вообще, больно нехорошо все это пахнет...
VirEx(home) (2009-11-05 11:00:00) [5]
> [55] Медвежонок Пятачок © (02.11.09 14:20)
> мда. странный сервис.
ничего странного
сервис автоматизирующий какие-либо действия записанные в скрипте, притом действия могут выполнятся вне зависимости от того есть ли в системе пользователь
Медвежонок Пятачок (2009-11-02 14:20:00) [6]мда. странный сервис.
Anatoly Podgoretsky (2009-11-02 13:13:00) [7]Impersonate
VirEx(home) (2009-11-02 13:08:00) [8]
> [52] Медвежонок Пятачок © (02.11.09 12:54)
> что мешает сразу запустить из под нужной учетки имеющей
> нужные права?
сервис выполняет скрипты
необходимо чтобы скрипт мог "переключатся" на учетку администратора например, чтобы засветить диалоговое окно
см [41], там пример команд в скрипте
Медвежонок Пятачок (2009-11-02 12:54:00) [9]сервис работает от прав которые выше чем у администратора, разве нет функционала API позволяющего менять права потоку на пониженные (администратор, гость и т.п.)?
что мешает сразу запустить из под нужной учетки имеющей нужные права?
VirEx(home) (2009-11-02 12:50:00) [10]
> [50] brother © (02.11.09 05:08)
> > выше чем у администратора
>
> это system что-ли?
насколько я знаю, да
brother (2009-11-02 05:08:00) [11]> выше чем у администратора
это system что-ли?
DVM (2009-11-01 21:53:00) [12]
> разве нет функционала API позволяющего менять права потоку
> на пониженные (администратор, гость и т.п.)?
Уже запущенному насколько я знаю нет.
Loginov Dmitry (2009-11-01 21:49:00) [13]> разве нет функционала API позволяющего менять права потоку
> на пониженные (администратор, гость и т.п.)?
права закрепляются за приложением при его запуске. Эти же права действуют
для каждого из потоков. Врядли в API предусмотрено изменение прав для
определенных потоков. Имхо, только [46].
VirEx(home) (2009-11-01 16:16:00) [14]
> [46] Юрий Зотов © (01.11.09 16:10)
сервис работает от прав которые выше чем у администратора, разве нет функционала API позволяющего менять права потоку на пониженные (администратор, гость и т.п.)?
Юрий Зотов (2009-11-01 16:10:00) [15]> VirEx(home) (01.11.09 15:32) [44]
> чтобы сам поток мог выполнять задачи от учетной записи в системе
Не думаю, что такое возможно. Поток живет внутри процесса, а процесс запущен от имени какого-то юзера - весь.
Но можно вместо потока (или ИЗ потока) порождать процесс - CreateProcessAsUser, CreateProcessWithLogonW.
VirEx(home) (2009-11-01 15:45:00) [16]
> чтобы сам поток мог выполнять задачи от учетной записи в
> системе
имеется ввиду от любой учетной записи в системе, какую пожелаешь
VirEx(home) (2009-11-01 15:32:00) [17]
> Юрий Зотов © (01.11.09 11:26) [43]
тоже самое делается через пайпы
но мне нужен пароль и пользователь не для базы, а немного другое
чтобы сам поток мог выполнять задачи от учетной записи в системе
Юрий Зотов (2009-11-01 11:26:00) [18]> VirEx(home) (01.11.09 10:31) [41]
Подобную задачу делал так:
1. Все работает через сокеты.
2. Сервис слушает порт.
3. Клиент коннектится на этот порт.
4. Сервис порождает поток, обслуживающий клиента и снова слушает порт.
5. Клиент передает потоку логин и пароль.
6. Поток коннектится к БД от имени (и с правами) клиента.
7. Клиент и поток обмениваются данными по установленному протоколу, при этом поток работает с БД.
8. Клиент отконнектился - поток умирает.
sniknik (2009-11-01 10:35:00) [19]> http + xml
> За HTTP +1
за http/или https, но - xml.
сам делаю сейчас примерно тоже самое (правда у меня выбора практически не было, т.к. одно из требований возможность работы клиента с сервером через интернет, а что еще в интернете гарантированно работает?...).
а xml попросту лишний, гораздо проще обмениваться "чистыми" рекордсетами, т.е. на сервере делаешь копитострим, на клиенте редфромстрим, и готово работаеш с данными, без дополнительных преобразований. (а ну да, это для ADO, у других может не быть возможности сохранять рекордсет куда бы то ни было, и тогда преобразования неизбежны... тогда неважно, можно и xml, хотя сам бы выбрал json)
VirEx(home) (2009-11-01 10:31:00) [20]сервис работает от привилегий системы (системная учетная запись), запускает отдельный поток, в котором выполняются команды пользователя (запуск программы, сохранение в файл и т.п.)
как сделать чтобы поток "переключался" на работу от пользовательских прав, в том числе и от прав работающего в системе пользователя
реализация в потоке что-то типа команды:
ShitchToUserRight('User1','passw');
showmessage();
ShitchToSystemRight;