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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.008 c
2-1205901637
HTML
2008-03-19 07:40
2008.04.13
Html редактор


15-1204193130
Kerk
2008-02-28 13:05
2008.04.13
Google Sites


2-1205844252
siddharta
2008-03-18 15:44
2008.04.13
компоненты в Дельфи7


2-1205773230
Dima
2008-03-17 20:00
2008.04.13
Не могу разобраться с кодом.Помогите ПОЖАЛУЙСТА!!!


2-1206041013
tim
2008-03-20 22:23
2008.04.13
проблема со скачиванием страниц





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский