Текущий архив: 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.
← →
Сергей М. © (2008-03-17 15:22) [41]
> е вижу я где написанно
Врешь)
Это
SERVICE_CHANGE_CONFIG Enables calling of the ChangeServiceConfig function to change the service configuration
видишь ?
← →
F@T@L_Err0r (2008-03-17 15:24) [42]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:31) [43]
> где же я допустил ошибку
Какой ты, однако, мнительный)
Ты у системы спроси, ошибся ты или не ошибся и если ошибся то в чем конкретно !
На то и система, чтобы следить за ошибочностью твоих действий)
Service:=OpenService(чего-то там);
Win32Check(Service <> 0);
Win32Check(ChangeServiceConfig(чего-то там));
← →
F@T@L_Err0r (2008-03-17 15:35) [44]Пишет что отказано в доступе...Но блин ведь все так как в справке...ниче не понимаю...
← →
Сергей М. © (2008-03-17 15:40) [45]
> блин ведь все так как в справке
Не-а .. все да не все) ..
Перечитывай справку по параметрам OpenSCManager
← →
F@T@L_Err0r (2008-03-17 15:50) [46]Сделал SCManager:=OpenSCManager("",nil,GENERIC_Write);
Тот же результат...
← →
Сергей М. © (2008-03-17 15:54) [47]А параметр SC_MANAGER_ALL_ACCESS ты там видел ?
← →
F@T@L_Err0r (2008-03-17 15:57) [48]>А параметр SC_MANAGER_ALL_ACCESS ты там видел ?
Пробывал то же самое...Отказано в доступе...
← →
Сергей М. © (2008-03-17 16:08) [49]Выясни, какая конкретно ф-ция возвращает этот отказ
← →
F@T@L_Err0r (2008-03-17 16:37) [50]WIn32Check(ChangeServiceConfig(Service,SERVICE_NO_CHANGE,SERVICE_AUTO_START,SERV ICE_NO_CHANGE,nil,nil,nil,nil,nil,nil,nil));
Вот эта...Но в ней вроде б все правильно...
← →
Сергей М. © (2008-03-17 16:39) [51]
> SERVICE_NO_CHANGE,SERVICE_AUTO_START,SERV ICE_NO_CHANGE
Фигню написал - фигню и получил.
ты сам-то понял, что ты тут понацарапал ?)
← →
F@T@L_Err0r (2008-03-17 16:56) [52]Ну ваще то ето уже модификация после очередног оексперемента ... в оригенале ето выглядит так:
WIn32Check(ChangeServiceConfig(Service,SERVICE_WIN32_OWN_PROCESS ,SERVICE_AUTO_START,SERVICE_NO_CHANGE,nil,nil,nil,nil,nil,nil,nil));
А второй параметр SERV ICE_NO_CHANGE ето параметр отвечает насколько я понял из спрвки за восстановление после сбоя или я не прав???
dwErrorControl
Specifies the severity of the error if this service fails to start during startup, and determines the action taken by the startup program if failure occurs. One of the following values can be specified:
Value Meaning
SERVICE_ERROR_IGNORE The startup (boot) program logs the error but continues the startup operation.
SERVICE_ERROR_NORMAL The startup program logs the error and puts up a message box pop-up but continues the startup operation.
SERVICE_ERROR_SEVERE The startup program logs the error. If the last-known-good configuration is being started, the startup operation continues. Otherwise, the system is restarted with the last-known-good configuration.
SERVICE_ERROR_CRITICAL The startup program logs the error, if possible. If the last-known-good configuration is being started, the startup operation fails. Otherwise, the system is restarted with the last-known good configuration.
SERVICE_NO_CHANGE The existing StartType value is not to be changed.
← →
Сергей М. © (2008-03-17 17:03) [53]http://forum.chertenok.ru/faq_online.php?n=114
Страницы: 1 2 вся ветка
Текущий архив: 2008.04.13;
Скачать: CL | DM;
Память: 0.57 MB
Время: 0.007 c