Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.13;
Скачать: CL | DM;

Вниз

Запуск службы   Найти похожие ветки 

 
F@T@L_Err0r   (2008-03-17 11:12) [0]

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


 
Reindeer Moss Eater ©   (2008-03-17 11:17) [1]

uses WinSvc;


 
F@T@L_Err0r   (2008-03-17 11:22) [2]

Ето ???
BOOL ChangeServiceConfig(

   SC_HANDLE hService, // handle to service
   DWORD dwServiceType, // type of service
   DWORD dwStartType, // when to start service
   DWORD dwErrorControl, // severity if service fails to start
   LPCTSTR lpBinaryPathName, // pointer to service binary file name
   LPCTSTR lpLoadOrderGroup, // pointer to load ordering group name
   LPDWORD lpdwTagId, // pointer to variable to get tag identifier
   LPCTSTR lpDependencies, // pointer to array of dependency names
   LPCTSTR lpServiceStartName, // pointer to account name of service
   LPCTSTR lpPassword, // pointer to password for service account  
   LPCTSTR lpDisplayName  // pointer to display name
  );
Если да то возникает вопрос как получит handle of servise?
Если можно то приблизительный пример заполнения параметров...Пожалуйста...


 
clickmaker ©   (2008-03-17 11:24) [3]


> програмно можно запустить виндовсскую службу и как перед
> этим получить ее имя?

получить имя, зная что?
запустить - OpenService, StartService


 
F@T@L_Err0r   (2008-03-17 11:32) [4]

>получить имя, зная что?

Все имя я знаю...Точнее путь к екзешнику...А теперь вопрос.В  каком модуле находятся OpenService, StartService???


 
Reindeer Moss Eater ©   (2008-03-17 11:50) [5]

А в первом ответе тебе не сказали?


 
F@T@L_Err0r   (2008-03-17 13:02) [6]

А что писать во втором и третьим параметрах???
StartService("C:\WINDOWS\system32\svchost.exe -k netsvcs",?,?);
Не могу разобратся помогите плиз....


 
clickmaker ©   (2008-03-17 13:03) [7]


> [6] F@T@L_Err0r   (17.03.08 13:02)
> А что писать во втором и третьим параметрах???

ты сначала первый правильно укажи...


 
F@T@L_Err0r   (2008-03-17 13:08) [8]

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


 
clickmaker ©   (2008-03-17 13:15) [9]


> [8] F@T@L_Err0r   (17.03.08 13:08)

там количество аргументов командной строки и они сами, в виде массива строк (PChar, вернее)


 
Slym ©   (2008-03-17 13:20) [10]

var p:PChar;
begin
 p:=nil;
 if not StartService(Service,0,p) then
   RaiseLastOSError;
end;


 
F@T@L_Err0r   (2008-03-17 13:22) [11]

s:= OpenService(0,"C:\WINDOWS\system32\svchost.exe -k netsvcs",0);
StartService(s,0,0);
Где ошибка???Если количество аргументов то насколько я понимаю ето цифры?Или я не прав???


 
Skyle ©   (2008-03-17 13:26) [12]


> F@T@L_Err0r   (17.03.08 13:22) [11]
> s:= OpenService(0,"C:\WINDOWS\system32\svchost.exe -k netsvcs",
> 0);

Справку открывал по этим функциям? Вот только честно...


 
Slym ©   (2008-03-17 13:26) [13]

var
 SCManager:THandle;
 Service:THandle;
 p:PChar;
begin
   SCManager:=OpenSCManager("",nil,GENERIC_READ);
   if SCManager=0 then RaiseLastOSError;
   try
     Service:=OpenService(SCManager,"ИМЯ СЕРВИСА",SERVICE_QUERY_STATUS or SERVICE_START or SERVICE_STOP);
     if Service=0 then RaiseLastOSError;
     try
       p:=nil;
       if not StartService(Service,0,p) then
         RaiseLastOSError;
     finally
       CloseServiceHandle(Service);
     end;
   finally
     CloseServiceHandle(SCManager);
   end;


 
clickmaker ©   (2008-03-17 13:29) [14]


> Если количество аргументов то насколько я понимаю ето цифры?

нет. Буквы. Сумма прописью, как в квитанции, знаешь


 
F@T@L_Err0r   (2008-03-17 13:30) [15]

Хорошо...А имя сервиса ето что тогда???чето я ваще уже запутался...Ето имя которое русское???если нет то где его можно посмотреть???


 
Slym ©   (2008-03-17 13:32) [16]

F@T@L_Err0r   (17.03.08 13:30) [15]
...Ето имя которое русское???если нет то где его можно посмотреть???

нет нерусское...
в оснастке Службы
например служба "Удаленный вызов процедур (RPC)" имеет имя RpcSs


 
Skyle ©   (2008-03-17 13:34) [17]


> F@T@L_Err0r   (17.03.08 13:30) [15]
> Хорошо...А имя сервиса ето что тогда???чето я ваще уже запутался.
> ..Ето имя которое русское???если нет то где его можно посмотреть?
> ??

Пуск->Выполнить->services.msc->На нужном сервисе правой кнопкой, Свойства, смотреть "имя службы".


 
F@T@L_Err0r   (2008-03-17 13:35) [18]

var s:cardinal;
   p:PChar;
begin
p:=nil;
s:= OpenService(0,"Messenger",0);
StartService(s,0,p);

Сделал вот так но служба не запускается...Может я что то упустил???Имя службы правильное...


 
Сергей М. ©   (2008-03-17 13:38) [19]


> s:= OpenService(0,"Messenger",0);


0 указан от балды ?


 
F@T@L_Err0r   (2008-03-17 13:40) [20]

>0 указан от балды ?

Да, а что там нада???


 
Сергей М. ©   (2008-03-17 13:41) [21]


> Да


Молодец ! Что еще сказать ?)
Ты так всегда и лепишь свой код - "от балды" ?)


> а что там нада?


А разве в справке не написано ?


 
clickmaker ©   (2008-03-17 13:41) [22]


> [20] F@T@L_Err0r   (17.03.08 13:40)

может, все-таки поразбираешься в предмете интереса?
что такое service control manager, дескриптор сервиса, чем имя отличается от отображаемого имени...
а то напоминает попытки порулить джипом, умея ездить только на самокате


 
F@T@L_Err0r   (2008-03-17 13:44) [23]

>А разве в справке не написано ?

Написанно что ето service control manager - а что ето я не знаю...вот и спрашиваю у вас...более просвященных  в етом вопросе...Что мне нада там поставить что бы ето работало???


 
Сергей М. ©   (2008-03-17 13:46) [24]


> Написанно что ето service control manager - а что ето я
> не знаю


Угу.

А дальше черным по белому написано, откуда эта беда берется

The OpenSCManager function returns this handle.

Эт что, для пушкина писано ?)


 
Skyle ©   (2008-03-17 13:49) [25]


> F@T@L_Err0r   (17.03.08 13:44) [23]
> >А разве в справке не написано ?
>
> Написанно что ето service control manager - а что ето я
> не знаю...

Ну тогда и не заморачивайся.
Пиши просто
{get-service Messenger}.Start()


 
Slym ©   (2008-03-17 13:57) [26]

[13] бери и пользуй


 
Slym ©   (2008-03-17 13:59) [27]

Удалено модератором


 
F@T@L_Err0r   (2008-03-17 14:05) [28]

>[13] бери и пользуй

Спасибо большое ...работает...


 
F@T@L_Err0r   (2008-03-17 14:25) [29]

Врпрос. Аесли служба отключена то как ее сначала включить???Потому что если состояние службы - отключена ...то возникает ошибка...


 
F@T@L_Err0r   (2008-03-17 14:27) [30]

А если точнее то как установить тип запуска - авто???


 
Сергей М. ©   (2008-03-17 14:28) [31]


> F@T@L_Err0r   (17.03.08 14:25) [29]


см. ChangeServiceConfig


 
F@T@L_Err0r   (2008-03-17 14:38) [32]

Service:=OpenService(SCManager,"Messenger",SERVICE_QUERY_STATUS or SERVICE_START or SERVICE_STOP);
ChangeServiceConfig(Service,SERVICE_WIN32_OWN_PROCESS,SERVICE_AUTO_START,SERVICE _NO_CHANGE,nil,nil,nil,nil,nil,nil,nil);

Делаю вот так...Но ничего не меняется...


 
clickmaker ©   (2008-03-17 14:42) [33]


> [32] F@T@L_Err0r   (17.03.08 14:38)

сам как думаешь, если меняешь конфигурацию, какие права доступа нужно запросить?


 
F@T@L_Err0r   (2008-03-17 14:44) [34]

>сам как думаешь, если меняешь конфигурацию, какие права доступа нужно запросить?

Не ну я ж под админом в винде сижу...


 
clickmaker ©   (2008-03-17 14:45) [35]


> Не ну я ж под админом в винде сижу

и что?
это избавляет от необходимости хелп читать?


 
Сергей М. ©   (2008-03-17 14:51) [36]


> я ж под админом в винде сижу


Да хоть лежи под админом !)

В справке черным по белому написано, какие параметры нужно указать при вызове OpenService для того чтобы иметь право на изменение конфигурации открытого тобой сервиса.


 
F@T@L_Err0r   (2008-03-17 15:00) [37]

var
SCManager:THandle;
Service:THandle;
p:PChar;
begin
  SCManager:=OpenSCManager("",nil,GENERIC_READ);
  if SCManager=0 then RaiseLastOSError;
    Service:=OpenService(SCManager,"Messenger",SERVICE_CHANGE_CONFIG or SERVICE_START or SERVICE_STOP);
    ChangeServiceConfig(Service,SERVICE_INTERACTIVE_PROCESS,SERVICE_AUTO_START,SERVI CE_NO_CHANGE,nil,nil,nil,nil,nil,nil,nil);

так что ли??


 
Сергей М. ©   (2008-03-17 15:03) [38]


> так что ли?


Так и будешь по каждому чиху проверяться ?)


 
F@T@L_Err0r   (2008-03-17 15:14) [39]

>Так и будешь по каждому чиху проверяться ?)

Не ну реально не могу разобратся...поетому и прошу помощи...И справку я уже перчитал 100 раз...ну не вижу я где написанно с какими параметрами нада запускать OpenService что бы можно было изменять свойства...


 
clickmaker ©   (2008-03-17 15:20) [40]


> И справку я уже перчитал 100 раз...ну не вижу я где написанно
> с какими параметрами нада запускать OpenService что бы можно
> было изменять свойства

а это что?

BOOL ChangeServiceConfig(
   SC_HANDLE hService,
...

hService

Identifies the service. This handle is returned by the OpenService or CreateService function and must have SERVICE_CHANGE_CONFIG access.



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

Текущий архив: 2008.04.13;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.023 c
15-1203955152
Ega23
2008-02-25 18:59
2008.04.13
Есть ли в PHP5 аналог forward?


15-1204357960
Анитивус
2008-03-01 10:52
2008.04.13
Бесплатные антивирусы


3-1195444789
Бакук
2007-11-19 06:59
2008.04.13
Слетает «привязка» к датамодулю


15-1204078326
Fon
2008-02-27 05:12
2008.04.13
Google Summer of Code 2008


2-1205757729
Pavelkq
2008-03-17 15:42
2008.04.13
Не переходит курсор в позицию в RichEdit