Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сервисы в Win2K, добавление нового 
:(
    Опции темы
anton_misa
Дата 4.4.2003, 07:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 30.1.2003

Репутация: нет
Всего: нет



как программно добавить новый сервис в win2k?
PM MAIL   Вверх
Vaulter
Дата 4.4.2003, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 2
Всего: 22



сначала нужно открыть манагер ) служб
OpenSCManager - читай MSDN по этой функции.
короче, вот тебе от сердца отрываю ;)
Код

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, int nCmdShow)
{
if(!lstrlen(lpCmdLine))
{
 MessageBox(0,"usage: setupservice.exe path name",0,0);
 return 0;
}
char servpathname[MAX_PATH],name[100];
lstrcpy(servpathname,lpCmdLine);//copy all
char *p=strchr(servpathname,' ');//search for space
if(p)*p=0;//force cut
lstrcpy(name,p+1);//another part
if(PathIsFileSpec(servpathname))//only name
{
 GetModuleFileName(0,servicedir,sizeof(servicedir));
 PathRemoveFileSpec(servicedir);
 PathAppend(servicedir,servpathname);
}
else
{
 lstrcpy(servicedir,servpathname);
}
SC_HANDLE scm=OpenSCManager(NULL,NULL,SC_MANAGER_CREATE_SERVICE);
if(scm!=NULL)
{
 SC_HANDLE svc=CreateService(scm,
  name,
  name,
  0,
  SERVICE_WIN32_OWN_PROCESS | SERVICE_INTERACTIVE_PROCESS,
  SERVICE_AUTO_START,
  SERVICE_ERROR_IGNORE,
  servicedir,
  NULL,
  NULL,
  NULL,
  NULL,
  NULL);

 if(svc!=NULL)
 {
  CloseServiceHandle(svc);
  wsprintf(infomes,"Service succesful creat at path:\n%s\nunder name: %s",
   servicedir,name);
  MessageBox(NULL, infomes, "Install", NULL);
 }
 CloseServiceHandle(scm);
}
else  {
 MessageBox(NULL, "Error: Could not create Service.", "Install", NULL);
}

return 0;
}



--------------------
PM MAIL WWW ICQ   Вверх
Step
Дата 4.4.2003, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



а что это дает, т.е. программа в вид сервиса, ее чо закрыть нельзя


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
-=Baa=-
Дата 4.4.2003, 09:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код выше инсталлирует сервис, а не любую программу... т.к. сервис этот довольно высокого уровня, то и соотв. закрыть его можно... это сервисы уровня ядра нельзя закрыть...
Я делал службу, которая сама ся инсталлировала и удаляла, если её запускать с разными ключами... если кому интересно, могу код выложить...
  Вверх
Step
Дата 4.4.2003, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



Цитата
интересно, могу код выложить...
давай, можно на ящик


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Vaulter
Дата 4.4.2003, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 2
Всего: 22



-=Baa=-
дык, у сервиса две точки входа
WinMain
и та что указываешь как ServiceMain
вот и инсталишь в WinMain самого себя. ;)


--------------------
PM MAIL WWW ICQ   Вверх
Step
Дата 4.4.2003, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



Цитата
дык, у сервиса две точки входа
WinMain
и та что указываешь как ServiceMain
вот и инсталишь в WinMain самого себя. ;)
на примере пожалуйста


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Vaulter
Дата 4.4.2003, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 2
Всего: 22



Step
10$
;)


--------------------
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0911 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.