WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Создание сервиса на удалённой машине

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Создание сервиса на удалённой машине
arty опубликован 24-01-2002 10:09 MSK   Click Here to See the Profile for arty   Click Here to Email arty  
Мне нужно создать сервис на удалённой машине. Для этого сначала использую ф-цию OpenSCManager("\\host_name",NULL,SC_MANAGER_ALL_ACCESS), на что она возвращает ошибку 1722 - The RPC server is unavailable. Может надо до вызова ещё что-то сделать? В MSDN про ето на написано. А может ошибка в чём-то другом. Помогите, плиз.
Кстати, есть такая примочка в Resource Kit - sc.exe, которая работает с сервисами (в том числе позволяет и удалённо создать его). Так вот с ней у меня получается создать.
bin опубликован 25-01-2002 11:15 MSK     Click Here to See the Profile for bin  Click Here to Email bin     
Что ты понимаешь под "создать", хочешь потом SC_MANAGER_CREATE_SERVICE?
Как ты опрашиваешь GetLastError? Если так:
if ((schManager=OpenSCManager(...))==NULL)
{
printf("%lu\n",GetLatError());
return FALSE;
}
то все Ok, и еще раз проверь проверь имя хоста. А если так:
schManager=OpenSCManager(...);
le=GetLastError();
if (le!=0)
{
printf("%lu\n",le);
return FALSE;
}
то добавь проверку schManager.
arty опубликован 25-01-2002 19:28 MSK     Click Here to See the Profile for arty  Click Here to Email arty     
Прошу прощения за может быть некорректно сформулированный вопрос. Вот код, может быть, так будет понятнее.

#include <windows.h>
#include <stdio.h>
#define MACHINE_NAME "\\host"
#define BIN_PATH "C:\\Temp\\Agent.exe"
#define ACCOUNT_NAME "\\host"

int main()
{
SC_HANDLE hsCManager = NULL;
if(!(hsCManager = OpenSCManager("\\ARTY",SERVICES_ACTIVE_DATABASE,SC_MANAGER_ALL_ACCESS)))
{
DWORD _err = GetLastError();
switch(_err)
{
case ERROR_ACCESS_DENIED:MessageBox(NULL,"ERROR_ACCESS_DENIED","",MB_OK);break;
case ERROR_DATABASE_DOES_NOT_EXIST:MessageBox(NULL,"ERROR_DATABASE_DOES_NOT_EXIST","",MB_OK);break;
case ERROR_INVALID_PARAMETER:MessageBox(NULL,"ERROR_INVALID_PARAMETER","",MB_OK);break;
}
CHAR err[1024];
sprintf(err,"Opening SCManager has failed. Error=%i",GetLastError());
MessageBox(NULL,err,"",MB_OK);
CloseServiceHandle(hsCManager);
return -1;
}
else
{
//создание сервиса
}
MessageBox(NULL,"Service was created successfully.","",MB_OK);
return 0;
}

arty опубликован 25-01-2002 19:47 MSK     Click Here to See the Profile for arty  Click Here to Email arty     
Пардон. Конечно же
CHAR err[1024];
sprintf(err,"Opening SCManager has failed. Error=%i",_err);
MessageBox(NULL,err,"",MB_OK);
CloseServiceHandle(hsCManager);
return -1;
arty опубликован 25-01-2002 19:58 MSK     Click Here to See the Profile for arty  Click Here to Email arty     
Разобрался.
Вместо \\host надо \\\\host.
С кем не бывает :-))

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.