Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];

Вниз

Проблема с написанием сервиса   Найти похожие ветки 

 
Spartak   (2003-05-19 07:50) [0]

Приветствую всех . Есть мысль сделать из программы сервис , но есть проблема : при создании программы я использовал код который приведён по ссылке http://www.club-soft.narod.ru/delphi/ApiServ.txt

Если этот код поместить в *.dpr и откомпелировать то сервис будет работать без проблем ( параметры запуска -install , -uninstall )
но если этот код поместить к уже работающей программе то запустить сервис не получаеться , подскажите пожайлусто кто знает каким образом можно провратить любую программу в сервис NT . Если можно то лучше кодом с коментариями . Бюсь над этим вопросом уже 4 дня :(


 
y-soft   (2003-05-19 09:43) [1]

ЛЮБУЮ программу запустить в качестве сервиса проблематично.
Сервис, все-таки, программа особенная.

Во-первых - он работает обычно под учетной записью Local System, поэтому по умолчанию не имеет доступа к сетевым ресурсам и требует правильного определения Security Descriptor для взаимодействия извне

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

В-третьих - сама логика работы сервиса иная, чем у обыкновенного приложения - он должен самостоятельно обрабатывать исключения и как можно меньше взаимодействовать с пользователем (в идеале - вообще не взаимодействовать) и быстро и корректно завершаться. Система, если сервис чем-то занят 30 или более секунд, завершает его автоматически.

Существуют утилиты (например SrvAny.exe из Microsoft Windows 2000 Resource Kit или FireDaemon for WinNT/2K/XP http://www.firedaemon.com), которые позволяют запускать любое приложение в качестве сервиса, но результат здесь не гарантирован.

P.S. Sorry, что без кода, но IMHO на вопрос я ответил...


 
y-soft   (2003-05-19 10:06) [2]

Замеченная очепятка: вместо "...пользователь их просто не увидит, т.к. у сервисов своя рабочая станция..." следует читать:
"...пользователь их просто не увидит, т.к. у сервисов своя оконная станция..."


 
Spartak   (2003-05-19 11:14) [3]

Спасибо . Може быть вы знаете тогда как убрать из списка запущеных задач свою прогу в winNT , win2000 и winXP ?

В общем из за этого я и собирался делать сервис ...


 
y-soft   (2003-05-19 11:20) [4]

>Spartak © (19.05.03 11:14)

Спасибо . Може быть вы знаете тогда как убрать из списка запущеных задач свою прогу в winNT , win2000 и winXP ?

Про это здесь уже много и часто писали, поищите по форуму...
Хотя IMHO зачем прятаться честной программе?...


 
Ghost   (2003-05-19 11:24) [5]

Программа честная ! это сервер программы адменистратирования ( вродк так пишеться :) ) а на форуме искал ! и так ничего и не нашёл , что нашёл это те ветки где на этот вопрос не давали нормальных ответов ( может вышеуказаные ветки просто постирали ? )


 
Spartak   (2003-05-19 11:26) [6]

бр , бр ,бр не под тем логином влез :) случайно скопировал когда искал ответы .


 
Polevi   (2003-05-19 11:29) [7]

зачем убирать, все равно у пользователя нет прав удалить ее


 
y-soft   (2003-05-19 11:34) [8]

>Polevi © (19.05.03 11:29)

При условии, что не разрешено интерактивное взаимодействие с десктопом и пользователь не имеет права останавливать сервер через SCM


 
y-soft   (2003-05-19 11:46) [9]

>Spartak © (19.05.03 11:26)

В NT прекрасная система безопасности, только надо правильно установить права и привилегии учетных записей. А в серьезных конторах ограничивают и физический доступ к серверу...


 
Spartak   (2003-05-19 11:56) [10]

> Polevi
почему это вдруг нет прав ? она же не сервис
> y-soft
Эта программа будет использоваться не только теми людьми которые смогут её настроить , но она будет работать даже в таких заведениях как компьютерные клубы . Где компьютер открыт для пользователя и который сможет снять программу с помощью менеджера задач windows ! а для норамльной установки требуеться знание особеностей работы под winNT а это к сожалению не у всех юзверей есть :(

По этому и хочеться сделать программу как можно более простой в настройке и как можно сложнее в смысле безопасности .


 
y-soft   (2003-05-19 12:07) [11]

>Spartak © (19.05.03 11:56)

"Просто" и "надежно" не всегда синонимы. Если администратор клуба не умеет настраивать права доступа в NT, то это плохой администратор. Сервер сети для игр как правило не используется, поэтому ничто не мешает убрать его в отдельное помещение.

Насчет Вашей реплики Polevi ©. Программу запускает сервис, т.е. она запускается под его учетной записью и, если специально не извратиться, получает уровень безопасности по умолчанию для данной учетной записи. Права Local System на локальном компьютере выше, чем даже права администратора...


 
y-soft   (2003-05-19 12:18) [12]

Есть очень подробная и хорошая книга

Дж.Рихтер, Дж.Кларк "Программирование серверных приложений для Microsoft Windows 2000" "Питер", 2001 ISBN 5-318-00296-X

Там все рассматриваются тонкости написания сервисов и работа с системой безопасности Windows


 
Spartak   (2003-05-19 12:31) [13]

> y-soft
Книга и в самом деле наверное хорошая ! но мне нужно ни это , мне нужно убрать мою программу из списка задачь ! Может я не так выразился , но мне нужно чтобы программа работала не на сервере а на всех машинах , в том числе и на игровых станциях


 
zom   (2003-05-19 12:58) [14]

А зачем тебе делать прогу сервисом?
что мешает перенести весь код из программы в сервис?
ты можешь в проект сервиса вставить любые формы и вызывать их криейт когда сочтеш нужным....


 
Spartak   (2003-05-19 13:06) [15]

> zom
не всё так просто :( этот метод я уже пробывал !
Я поменю была одна ветка , так там один чел утверждал что знает как скрыть программу из списка win2000 !


 
zom   (2003-05-19 14:37) [16]

скрыть прогу из списка приложений в таскбаре и из панели задач:
ShowWindow(Application.Handle, SW_HIDE);
но при етом он остаётся доступен по альтабу, но если у окошка заблокировать все или просто всегда хайд, то альтаб ничего не сможет...

а вот убрать процесс из списка процессов сложно.
это возможно только если процесс запустить от имени другого пользователя и в политиках запретить видеть процессы других пользователей (это возможно например на 2000server а на Про врядли.. хотя может и есть такие настройки)
Проще в политике запретить вызов таск менеджера.

Spartak
а что не так просто? что именно у тя не получилось перенести в сервис?
конечно меня тоже напрягали некоторые фишки, типа что у сервиса у Application нету Handle и ProcessMessages...
но в принципе это все обходится....



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.009 c
3-13013
Yuraz
2003-05-08 19:27
2003.06.05
TreeView +DataSet


3-13066
Sergey-ZZZ
2003-05-15 16:22
2003.06.05
строка в DBGrid


14-13428
goobit
2003-05-19 12:40
2003.06.05
Зачем нужены DCP-файлы?


1-13290
Maxim Pshevlotsky
2003-05-24 12:44
2003.06.05
Ошибка при обращении к DCOM обьекту


1-13229
kah68
2003-05-27 12:55
2003.06.05
Как выполнить запрос в отдельном процессе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский