Текущий архив: 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.54 MB
Время: 0.006 c