Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

сервис + приложение (обмен данными)


Страницы:   1 2 3

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;


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо