 |
Запустить процесс как службу[Какие есть варианты] |

07.04.2010, 12:24
|
|
Постоянный
Регистрация: 13.11.2009
Сообщений: 437
С нами:
8680278
Репутация:
17
|
|
Запустить процесс как службу[Какие есть варианты]
ЯП любой 
|
|
|

07.04.2010, 12:35
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами:
10097606
Репутация:
3349
|
|
Ну вообще с самого начала нужно писать службу.
Вообще процесс службы отличается от обычного процесса тока небольшими изменениями в коде. А именно: Регистрации функции службы и регистрации функции контроля.
Затем служба создается или через специально созданные функции или через реестр. Первый способ более правильный.
Затем всё запускается через те же функции.
Смотри 5005 статей по делфи
1) написание сервиса:
- Сервисы в Delphi на чистом API
- Написание сервисов Windows NT на WinAPI
2) установка сервиса (программно)
- Инсталляция и удаление сервисов под НТ
3) управление сервисом
- Остановка и запуск сервисов
Если нужно любую прогу запускать, то напиши простенькую службу которая будет запускать твою прогу.
Если ты обычную прогу запустишь как службу, то система может её выкинуть по таймауту, потому что она не зарегает функции службы и контроля.
-----------------------
Еще можно создать службу через реестр. Но винда может не сразу запускать её, а тока после ребута.
-----------------------
А вообще что тебе нужно именно?
- использование контроля?
- использование прав системы?
- просто чтобы был такой типа автозапуск?
- другие вариант?
Последний раз редактировалось slesh; 07.04.2010 в 12:39..
|
|
|

07.04.2010, 13:15
|
|
Постоянный
Регистрация: 13.11.2009
Сообщений: 437
С нами:
8680278
Репутация:
17
|
|
Нужно прописать свою прогу в сервис(но не через реестр, а с помощью API), и автозапускать её при старте компа.
|
|
|

07.04.2010, 15:37
|
|
Новичок
Регистрация: 06.04.2010
Сообщений: 7
С нами:
8473254
Репутация:
0
|
|
Код:
SC_HANDLE hSCM = ::OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS );
if( hSCM == NULL )
return FALSE;
SC_HANDLE hService = ::CreateService(
hSCM, _T("MyServiceName"), _T("MyServiceName"),
SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS,
SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
_T("Path To Executable"), NULL, NULL, NULL, NULL, NULL);
if( hService )
::CloseServiceHandle( hService );
if( hSCM )
::CloseServiceHandle( hSCM );
|
|
|
|
 |
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|