Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/37: Рейтинг темы: голосов - 37, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 02.09.2013
Сообщений: 24

Создание службы в Delphi

02.09.2013, 02:12. Показов 7322. Ответов 41
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
подскажите пожалуйста народ, пытаюсь сделать клиент сервер, только сервер реализован в виде службы, задача такая
клиент конектится к серверу-службе, передает, команду логин пароль и что запустить (например exe), сервак должен с помощью CreateProcessWithLogonW, создать процесс под заданными учетными данными и запустить файл, но что то файл не запускается, если все это делать в простом приложении все работает, а служба что то не хочет запускать

сам замысел сделать похожую чтуку на psexec, только GUI
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.09.2013, 02:12
Ответы с готовыми решениями:

Delphi: переименовать службу, запуск 2-х экземпляров службы
Написал службу, в системе имя службы и отображаемое имя берется из параметров: Name и DisplayName. Стоит задача установить 2 (или...

Сервисы или службы в delphi. Инсталл, деинсталл, запуск, остановка
Написал программку для инсталляции и пуска, остановки и деинсталляции Сервиса. Всё работает, но есть одна странность. Когда делаю...

D7, запуск службы из под службы, возможно ли такое?
Hello All. Необходимо написать службу которая будет через определенное время (каждые 5 минут) проверять существует (зарегистрирована) ли...

41
Native x86
Эксперт Hardware
 Аватар для quwy
6859 / 3791 / 1026
Регистрация: 13.02.2013
Сообщений: 11,861
02.09.2013, 02:45
Права на вход в качестве службы выданы юзеру, для которого выполняется CreateProcessWithLogonW?
0
0 / 0 / 0
Регистрация: 02.09.2013
Сообщений: 24
02.09.2013, 06:42  [ТС]
подскажите пожалуйста как это выполнить ?
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
02.09.2013, 08:50
1. Вы правда спрашивали у Гугля "delphi написать службу"? Не верю, что не нашли.
2. Посмотреть в DRKB. Там есть целый раздел, только называется это "Сервисы NT".
3. File -> New -> Other, в разделе "Delphi projects" есть "Service Application".
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
02.09.2013, 09:42
Цитата Сообщение от stelz0 Посмотреть сообщение
если все это делать в простом приложении все работает, а служба что то не хочет запускать
Не работает, потому что служба работает в нулевой сессии, а юзеры сидят в сессиях 1, 2, 3 и т.д.
0
0 / 0 / 0
Регистрация: 02.09.2013
Сообщений: 24
02.09.2013, 11:39  [ТС]
1. Вы правда спрашивали у Гугля "delphi написать службу"? Не верю, что не нашли.
2. Посмотреть в DRKB. Там есть целый раздел, только называется это "Сервисы NT".
3. File -> New -> Other, в разделе "Delphi projects" есть "Service Application".



1) в гугле иссякли ответы на мои вопросы, одно и тоже
2) можно прямую ссылку на статью ?
3) естественно так и делаю

Добавлено через 13 минут
как мне попасть в эти сессии ?
и если служба работает в 0 сессии, я то создаю процесс из службы с учетными данными одного из пользователей/администраторов, т.е я так понимаю файл должен запуститься от имени указанного юзера, все это так и получается если прога не как служба реализована
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
02.09.2013, 11:48
Я невнимательно прочитал сам ваш вопрос, упёрся в заголовок.
Цитата Сообщение от stelz0 Посмотреть сообщение
2. Посмотреть в DRKB. Там есть целый раздел, только называется это "Сервисы NT".
"Системные функции и winapi" - "windows" - "сервисы NT и драйверы, функции, специфичные для ХР"
0
0 / 0 / 0
Регистрация: 02.09.2013
Сообщений: 24
02.09.2013, 11:56  [ТС]
[QUOTE=dondublon;5010305]Я невнимательно прочитал сам ваш вопрос, упёрся в заголовок.

"Системные функции и winapi" - "windows" - "сервисы NT и драйверы, функции, специфичные для ХР"

что то не получается найти, скиньте пожалуйста ссылку, если можно

все нашел, сейчас гляну
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
02.09.2013, 12:20
Цитата Сообщение от stelz0 Посмотреть сообщение
как мне попасть в эти сессии ?
Получить маркер безопасности (access token) пользователя, залогиненного в нужной сессии,
затем создать блок переменных окружения и запустить процесс с этим token-ом.
Например, через CreateProcessAsUser.
1
0 / 0 / 0
Регистрация: 02.09.2013
Сообщений: 24
02.09.2013, 13:04  [ТС]
дело в том что мне надо чтобы служба функционировала и без залогиненых юзеров, я хочу повторить psexec только с интерфейсом, а psexec работает и без залогиненных юзаков
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
02.09.2013, 13:13
Цитата Сообщение от stelz0 Посмотреть сообщение
сам замысел сделать похожую чтуку на psexec, только GUI
Цитата Сообщение от stelz0 Посмотреть сообщение
мне надо чтобы служба функционировала и без залогиненых юзеров
Первое + второе = невозможно. Где Вы собираетесь показывать GUI ? В нулевой сессии ?
0
0 / 0 / 0
Регистрация: 02.09.2013
Сообщений: 24
02.09.2013, 13:17  [ТС]
помогите тогда разобраться как всетаки работает psexec, как самому реализовать такой алгоритм, хотябы выполнять запуск файлов от имени
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
02.09.2013, 13:26
Какую ошибку возвращает CreateProcessWithLogon (в смысле, что в GetLastError) ?
0
0 / 0 / 0
Регистрация: 02.09.2013
Сообщений: 24
02.09.2013, 13:29  [ТС]
5 Отказано в доступе
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
02.09.2013, 13:41
А права доступа к десктопу и оконной станции, в которой запущена служба, Вы меняли ?

И хочу уточнить, на всякий случай - требуется запустить процесс от имени пользователя,
но при этом в сессии службы и на ее невидимом рабочем столе ?
0
0 / 0 / 0
Регистрация: 02.09.2013
Сообщений: 24
02.09.2013, 13:52  [ТС]
у меня просто описана функция createprocesswithlogonw, в которую я передаю команду логин пароль и путь до файла, сама служба от system работает

больше я не знаю как дальше действовать
требуется уметь выполнять запуск файлов exe,msi,bat ну хотя бы бат, как положено чтобы появлялось окно. Читал что для этого интерактивный режим нужен для отображения форм.
вот на psexec я делаю так: включены удаленные пк (просто ОС загрузилась, без входов юзеров), я со своего ПК с помощью psexec пишу @file.txt -u admin -p 123 \\10.37.50.50\script.bat и psexec выполняет этот батник на удаленных ПК, вот така надо бы
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
02.09.2013, 14:03
И где появляется окно этого батника ? Прямо на окне входа в систему ?
0
0 / 0 / 0
Регистрация: 02.09.2013
Сообщений: 24
02.09.2013, 14:07  [ТС]
неееет ))), оно не появляется когда logoff, но работу выполняет, а если есть кто то залогиненый, то окно появляется и также выполняет работу
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
02.09.2013, 14:34
Можно попробовать примерно так:

1) С помощью WTSGetActiveConsoleSessionId определить ID сессии, которая в данный
момент приаттачена к консоли.

2) Запустить в этой сессии новый процесс в контексте SYSTEM.
Можно так: сделать дубликат маркера безопасности текущего процесса и затем при
помощи SetTokenInformation с TokenSessionId установить в нем соответствующий ID.
А затем использовать полученный access token для CreateProcessAsUser.

3) Из этого процесса попытаться найти оконную станцию WinSta0 и проверить, активен ли в
ней рабочий стол Default. Если нет - использовать текущую оконную станцию и десктоп.
Все, что запускается вне WinSta0\Default, будет невидимым.

4) Добавить SID пользователя, от имени которого должен быть запущен новый процесс, в
права доступа оконной станции и десктопа.

5) Вызвать CreateProcessWithLogonW.
0
0 / 0 / 0
Регистрация: 02.09.2013
Сообщений: 24
02.09.2013, 22:00  [ТС]
а что creatprocesswithlogonw из под службы не может выполняться ? просто чисто такой функцией,
мб эта creatprocesswithlogonw функц не подходит, мб чтонибудь еще есть ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.09.2013, 22:00
Помогаю со студенческими работами здесь

Создание программ на Delphi
Мне очень нужна помощь программиста нужно сделать 6 программ уровень сложности очень легкий. Если есть добрые люди то помогите...

Создание классов в Delphi
Вот такое задание .... Входные данные: массив символов Действие: выполняет преобразование( транслитерация) в латиницу с заменой всех...

Создание игры на Delphi
Здравствуйте! Я решил попробовать написать простенькую игру на Delphi. Но возникли вопросы: 1) Какой (бесплатный) 3D движок выбрать...

Создание чата на Delphi
Я хочу сделать свой чат, и мне надо чтобы текст добавлялся виде HTML кода в TWebBrowser, или в любой другой подобный компонент. С...

Создание «учебника по Pascal» в Delphi
Добрый день! Помогите пожалуйста создать программу, кому не сложно, буду очень благодарен! Нужно создать программу в (VCL Forms...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru