Форум: "WinAPI";
Текущий архив: 2006.01.08;
Скачать: [xml.tar.bz2];
ВнизРегистрация сервиса Найти похожие ветки
← →
Чапаев © (2005-10-31 16:32) [0]При регистрации сервиса с помощью командной строки MySvc.exe /install сервис создаётся без описания и как это описание добавить, я не знаю. Если сервис регистрировать с помощью sc.exe, то можно добавить и описание. НО! При этом почему-то сервис регистрируется так, что он якобы не может быть остановлен или поставлен на паузу.
Люди добрые, поможите кто чем может. ;-)
← →
Игорь Шевченко © (2005-10-31 16:39) [1]
> и как это описание добавить, я не знаю
ChangeServiceConfig ?
← →
Набережных С. © (2005-10-31 17:31) [2]ChangeServiceConfig2 ?
← →
Baltikla-26 (2005-10-31 17:41) [3]А также ключ реестра
HKLM\system\controlset001\ServiceName\Description
← →
Leonid Troyanovsky © (2005-10-31 17:45) [4]
> Baltikla-26 (31.10.05 17:41) [3]
> А также ключ реестра
> HKLM\system\controlset001\ServiceName\Description
Не так.
А также http://rsdn.ru/?summary/2393.xml
--
Regards, LVT.
← →
Baltikla-26 (2005-10-31 17:48) [5]
> Не так.
Ну почему же.
После установки сервиса можно добавить комментарий в соответствующую ветку реестра. Вот и все.
Вариант ничем не хуже других.
← →
Leonid Troyanovsky © (2005-10-31 18:12) [6]
> Baltikla-26 (31.10.05 17:48) [5]
> > Не так.
> Ну почему же.
RTFM.
--
Regards, LVT.
← →
Baltikla-26 (2005-10-31 18:15) [7]
> RTFM.
Это Вам, уважаемый, стоит RTFM.
А потом уже бред писать.
← →
Leonid Troyanovsky © (2005-10-31 18:21) [8]
> Baltikla-26 (31.10.05 18:15) [7]
> Это Вам, уважаемый, стоит RTFM.
> А потом уже бред писать.
LMD, уважаемый.
--
Regards, LVT.
← →
Игорь Шевченко © (2005-10-31 18:21) [9]Baltikla-26 (31.10.05 18:15) [7]
RTFM надо все-таки тебе. И не один раз. Начав с того, что ControlSet"ов может быть не один
← →
Baltikla-26 (2005-10-31 18:27) [10]
> Leonid Troyanovsky © (31.10.05 18:21) [8]
> LMD, уважаемый.
Больше нечего сказать?
> Игорь Шевченко © (31.10.05 18:21) [9]
>
> RTFM надо все-таки тебе. И не один раз. Начав с того, что
> ControlSet"ов может быть не один
И что?
Это как-то мешает исправить комментарий?
← →
Leonid Troyanovsky © (2005-10-31 18:31) [11]
> Baltikla-26 (31.10.05 18:27) [10]
> Больше нечего сказать?
А чего сказать, если человек не хочет RTFM?
--
Regards, LVT.
← →
Игорь Шевченко © (2005-10-31 18:34) [12]
> Это как-то мешает исправить комментарий?
В другом controlset ?
← →
KorvinOE © (2005-10-31 18:48) [13]Точно не знаю, но я регестрировал свой сервер, и без проблем ставил его на паузу и полностью останавливал. Вот только я писал
не:"MySvc.exe /install",
а "MySvc.exe -install".
Вдруг это поможет, всякое бывает ... :)
← →
Baltikla-26 (2005-10-31 18:49) [14]>Leonid Troyanovsky © (31.10.05 18:31) [11]
А можно чуть более аргументированно?
А не просто языком чесать?
Игорь Шевченко © (31.10.05 18:34) [12]
> Это как-то мешает исправить комментарий?
В другом controlset ?
А кто мешает в нужном исправить?
← →
Baltikla-26 (2005-10-31 18:56) [15]Можно я сразу не соглашусь с автором из ссылки в [4], а именно - вот с этим -
SCM загружает сразу всю конфигурационную базу данных в память при старте системы, поэтому любые изменения в реестре не вступят в силу до перезагрузки системы, а для изменения конфигурации служб следует пользоваться специальными функциями, которые мы рассмотрим в следующем разделе. Сейчас же мы подробно изучим каждый из конфигурационных параметров.
← →
Baltikla-26 (2005-10-31 18:57) [16]Leonid Troyanovsky © (31.10.05 18:21) [8]
Выбрав нужную ветку в реестре и добавив туда поле комментария, сразу получим нужный результат - в той же SCM бкудет виден комментарий.
Так, что уважаемый - LMD.
← →
kami © (2005-10-31 19:18) [17]Baltikla-26 (31.10.05 18:57) [16]
В худшем случае - HKLM\system\CurrentControlSet ,
а вообще - единственно верный вариант
Набережных С. © (31.10.05 17:31) [2]
← →
Baltikla-26 (2005-10-31 19:21) [18]>kami © (31.10.05 19:18) [17]
> В худшем случае - HKLM\system\CurrentControlSet ,
Поясни свои слова, а то непонятно, что ознаяает - "в худшем случае".
← →
Чапаев © (2005-10-31 19:30) [19]
> Точно не знаю, но я регестрировал свой сервер, и без проблем
> ставил его на паузу и полностью останавливал. Вот только
> я писал
> не:"MySvc.exe /install",
> а "MySvc.exe -install".
> Вдруг это поможет, всякое бывает ... :)
Читай внимательнее. Проблемы с остановом возникают в том случае, если пользоваться sc.exe.
← →
kami © (2005-10-31 19:34) [20]Baltikla-26 (31.10.05 19:21) [18]
Поясняю -
0. ControlSet001 - это не обязательно активный ControlSet, AFAIK.
1.Никто не может дать гарантию, что эта ветка реестра(XXXControlSetXXX) и в дальнейшем будет называться так.
2.У программы может не оказаться достаточно прав для записи значения в нужный ключ (можешь опровергнуть, т.к. я не знаю, как соотносятся друг с другом права на ChangeServiceConfig и права доступа к реестру, хотя, возможно, никак не соотносятся).
← →
Baltikla-26 (2005-10-31 19:41) [21]kami © (31.10.05 19:34) [20]
0. ControlSet001 - это не обязательно активный ControlSet, AFAIK.
Совершенно верно, но об этом никто и не говорил.
Получить активную ветку не представляет проблем.
1.Никто не может дать гарантию, что эта ветка реестра(XXXControlSetXXX) и в дальнейшем будет называться так.
Совершенно верно.
Но об этом тоже никто не говорил.
Насколько я знаю, пока это правило действует во всех версиях.
(Хотя, может быть, ошибаюсь?)
2.У программы может не оказаться достаточно прав для записи значения в нужный ключ (можешь опровергнуть, т.к. я не знаю, как соотносятся друг с другом права на ChangeServiceConfig и права доступа к реестру, хотя, возможно, никак не соотносятся).
Точно. Права одинаковые, как программно, так и используя RegEdit
И все это никак не опровергает варианта с исправлением реестра. Не правда ли?
← →
Baltikla-26 (2005-10-31 19:49) [22]А вообще, подождем г. Трояновского, чтобы он просветил нас и рассеял мои заблуждения.
← →
kami © (2005-10-31 19:59) [23]Baltikla-26 (31.10.05 19:49) [22]
Точно. Права одинаковые, как программно, так и используя RegEdit
Я говорил не за это. Если программа смогла инсталлировать сервис, то доступ к нему для изменения параметров, скорее всего, получит. То, что вызов ChangeServiceConfig2 изменит ветку в реестре или что-то еще для изменения описания сервиса - это дело Винды и только ее, где она собирается хранить данную информацию; дело программы - знать, что эта функция меняет описание сервиса, а вот каким боком - должно быть абсолютно без разницы. А вот прямых прав на запись в реестр (и не важно, вручную, или RegEdit-ом) у программы может и не оказаться (а как здесь любят говорить - если админ не дурак, то и не окажется).
← →
kami © (2005-10-31 20:01) [24]
> (и не важно, вручную, или RegEdit-ом)
Читать : (и не важно, программно или "ручками" RegEdit-ом)
← →
Baltikla-26 (2005-10-31 20:04) [25]
> А вот прямых прав на запись в реестр...
Они одинаковы, поэтому не имеет значения, как изменять реестр.
← →
Baltikla-26 (2005-10-31 20:10) [26]>kami © (31.10.05 19:59) [23]
Вопрос ведь не в том, как делать лучше.
г. Трояновский утверждает, что это способ вооще RTFM, LMD и т.д., что это в корне неверно.
Я, со своей стороны, хочу заметить, что г. Трояновский написал свои оскорбления не подумав прежде, поэтому и жду от него опровержения.
Еще хочу заметить в сторону г. Трояновского, что если нет каких-либо весомых аргументов, то не стоит писать менторским тоном, провозглашая неверные истины. Как раз про такие вещи и говорят - LMD.
← →
Набережных С. © (2005-10-31 21:25) [27]
> Baltikla-26 (31.10.05 20:04) [25]
> Они одинаковы, поэтому не имеет значения, как изменять реестр.
Вообще-то и у объекта "служба",и у объекта "SCM", и у объекта "ключ" есть собственные дескрипторы защиты, и они могут быть изменены независимо друг от друга. А сам SCM работает от имени системы. Нет, ее, конечно, тоже можно удалить из списка доступа, вот только это никак не повлияет, имхо.
← →
wp2 (2005-10-31 21:29) [28]procedure CreateNTServiceEx(ExecutablePath, ServiceName: String);//Installing Services
var hSCMgr: SC_HANDLE;
begin
hSCMgr := OpenSCManager(nil, nil, SC_MANAGER_CREATE_SERVICE);
if hSCMgr <> 0 then
begin
CreateService(hSCMgr, PChar(ServiceName), PChar(ServiceName),
STANDARD_RIGHTS_REQUIRED, SERVICE_WIN32_OWN_PROCESS,
SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
PChar(ExecutablePath), nil, nil, nil, nil, nil);
CloseServiceHandle(hSCMgr)
end
end;
procedure DeleteNTService(ServiceName: string);//Uninstalling Services
var hServiceToDelete, hSCMgr: SC_HANDLE;
begin
hSCMgr := OpenSCManager(nil, nil, SC_MANAGER_CREATE_SERVICE);
if hSCMgr <> 0 then
begin
hServiceToDelete := OpenService(hSCMgr, PChar(ServiceName), SERVICE_ALL_ACCESS);
DeleteService(hServiceToDelete);
CloseServiceHandle(hSCMgr)
end
end;
← →
Набережных С. © (2005-10-31 21:41) [29]
> wp2 (31.10.05 21:29) [28]
Это ты к чему?
← →
Leonid Troyanovsky © (2005-11-01 09:49) [30]
> Baltikla-26 (31.10.05 20:10) [26]
> Вопрос ведь не в том, как делать лучше.
> г. Трояновский утверждает, что это способ вооще RTFM, LMD
> и т.д., что это в корне неверно.
Начнем с того, что я заметил, как лучше.
Более того, я даже не стал тыкать пальцем в явную ошибку,
а также рассуждать о порочности редактирования реестра для
конфигурации сервиса.
Во-вторых, с каких это пор RTFM стало неким ругательством?
Это, всего лишь, призыв почитать упомянутые материалы.
Ну, а остальное вызвано не с неверностью к.л. идей,
а проявлением агрессивного невежества их проводников.
--
Regards, LVT.
← →
Leonid Troyanovsky © (2005-11-01 09:59) [31]
> Baltikla-26 (31.10.05 18:56) [15]
> Можно я сразу не соглашусь с автором из ссылки в [4], а
> именно - вот с этим -
> SCM загружает сразу всю конфигурационную базу данных в память
> при старте системы, поэтому любые изменения в реестре не
> вступят в силу до перезагрузки системы, а для изменения
> конфигурации служб следует пользоваться специальными функциями,
> которые мы рассмотрим в следующем разделе. Сейчас же мы
Замечания автору можно высказать на http://rsdn.ru/?forum/?group=winapi
Он там часто бывает, и, думаю, не останется равнодушным к
конструктивной критике.
Однако, следует заметить, что Александру вполне удалось донести
до читателей, почему надо пользоваться именно этими функциями.
Проблема не только в правах доступа, но и в обычном разделении
доступа для читателей и писателей, что, при использовании
рекомендуемого API для конфигурации сервисов возложено на систему.
--
Regards, LVT.
← →
Baltikla-26 (2005-11-01 13:29) [32]> Набережных С. © (31.10.05 21:25) [27]
> Вообще-то и у объекта "служба",и у объекта "SCM", и у объекта
> "ключ" есть собственные дескрипторы защиты, и они могут
> быть изменены независимо друг от друга.
Согласен, тут я неправ, и признаю.
>Leonid Troyanovsky © (01.11.05 09:49) [30]
После неаргументированных [4], [6] RTFM выглядит именно оскорблением.
О чем в [7] было сказано ясно и понятно.
В [8] пошли опять оскорбления, и опять без аргументов.
В [30]:
Более того, я даже не стал тыкать пальцем в явную ошибку,
Позвольте узнать, какую?
Если про наименование ключа, то ниже было написано, что он вычисляется тривиально.
Так что ошибки там нет.
а также рассуждать о порочности редактирования реестра для
конфигурации сервиса.
Кто сказал Вам такую чушь?
Ну, а остальное вызвано не с неверностью к.л. идей,
а проявлением агрессивного невежества их проводников.
Когда некоторые люди, нацепив голубые штаны, начинают вещать, не аргументируя свою позицию, и плевать на все другие аргументы, чего-либо другого, кроме ответных плевков, трудно ожидать.
Однако, следует заметить, что Александру вполне удалось донести
до читателей, почему надо пользоваться именно этими функциями.
Проблема не только в правах доступа, но и в обычном разделении
доступа для читателей и писателей, что, при использовании
рекомендуемого API для конфигурации сервисов возложено на систему.
Прекрасная статья, но когда она рекомендуется вкупе с оскорблениями(RTFM - это оскорбление, потому что не несет в себе, кроме элементов демагогиии, ничего более).
PS.
Заметьте, что аргументов неприемлимости подхода с редактированием реестра здесь никто так и не услышал.
← →
Игорь Шевченко © (2005-11-01 13:38) [33]Baltikla-26 (01.11.05 13:29) [32]
Ну хорошо, ответь мне на один простой вопрос: все настройки сервисов можно задать в реестре, собственно, больше они нигде не запоминаются. Зачем Microsoft придумала Service Manager API, если все так просто делается через реестр ?
Только подумай сначала, прежде чем отвечать.
← →
Baltikla-26 (2005-11-01 13:59) [34]Игорь Шевченко © (01.11.05 13:38) [33]
Ну хорошо, ответь мне на один простой вопрос: все настройки сервисов можно задать в реестре, собственно, больше они нигде не запоминаются. Зачем Microsoft придумала Service Manager API, если все так просто делается через реестр ?
Мы ведь говорим не о всех настройках сервиса, а лишь об изменении комментария к нему.
А это ведь большая разница. Верно?
← →
Игорь Шевченко © (2005-11-01 14:05) [35]Baltikla-26 (01.11.05 13:59) [34]
> Мы ведь говорим не о всех настройках сервиса, а лишь об
> изменении комментария к нему.
> А это ведь большая разница. Верно?
Нет, я разницы не вижу. Реестр один и тот же, API один и тот же, я же говорю, что вся информация о сервисах хранится в реестре и только там.
Вопрос - зачем MS сделал Service Manager API ?
← →
Baltikla-26 (2005-11-01 14:07) [36]
> Вопрос - зачем MS сделал Service Manager API ?
Чтобы дать готовое средство для работы с сервисами программистам.
А вопрос как-то связан с темой топика?
← →
Baltikla-26 (2005-11-01 14:09) [37]
> Нет, я разницы не вижу. Реестр один и тот же, API один и
> тот же, я же говорю, что вся информация о сервисах хранится
> в реестре и только там.
Разница в том, что поле комментария никак не влияет на работу сервиса, и используется только в SCM.
← →
Игорь Шевченко © (2005-11-01 14:45) [38]Baltikla-26 (01.11.05 14:07) [36]
> Чтобы дать готовое средство для работы с сервисами программистам.
Да. Например, для изменения описания сервиса служит готовое средство ChangeServiceConfig2.
> Разница в том, что поле комментария никак не влияет на работу
> сервиса, и используется только в SCM.
Собственно, большинство параметров сервиса используется только в SCM. Однако MS настоятельно рекомендует пользоваться API вместо редактирования реестра. Посуди сам, зачем напрягать программистов, заставлять их разрабатывать API, документировать их, если все задачи можно решить простым редактированием реестра, как советуешь ты.
← →
Baltikla-26 (2005-11-01 14:49) [39]
> Посуди сам, зачем напрягать программистов, заставлять их
> разрабатывать API, документировать их, если все задачи можно
> решить простым редактированием реестра, как советуешь ты.
>
Ну зачем же так сурово.
Я лишь предложил один из возможных вариантов. Не более.
> Однако MS настоятельно рекомендует пользоваться API вместо
> редактирования реестра
Разве рекомендации накладывают какие-то ограничения?
Мы вольны использоватьлюбые инструменты и возможности на свой страх и риск. Тут уж каждый выбирает, какой вариант ему подойдет больше.
← →
Игорь Шевченко © (2005-11-01 15:02) [40]Да собственно, в [23] все сказано, к чему повторяться.
Все функции работы с SCM вызывают отправку запроса процессу SCM по коммуникационному каналу, а дальнейшие действия SCM выполняет сам, со своими правами, со своим маркером доступа, и т.д. Подумай сам, к чему такие сложности, если все действия можно выполнить простым редактированием реестра (по крайней мере, в advapi32.dll это могло бы быть сделано).
← →
wp2 © (2005-11-01 21:18) [41]
> > wp2 (31.10.05 21:29) [28]
>
> Это ты к чему?
Это я к тому, как можно зарегистрировать процесс програмным путём
← →
Чапаев © (2005-11-02 10:43) [42]Это снова я... Не помешаю?
Попробовал я создавать/настраивать сервис с помощью CreateService()/ChangeServiceConfig(). Всё равно сервис получается NON_STOPPABLE|NON_PAUSABLE|IGNORES_SHUTDOWN. Те же результаты при использовании примера из MSDN. Что не так??
← →
Игорь Шевченко © (2005-11-02 11:43) [43]Чапаев © (02.11.05 10:43) [42]
А код в студию не судьба ?
Страницы: 1 2 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.01.08;
Скачать: [xml.tar.bz2];
Память: 0.58 MB
Время: 0.009 c