|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Странное поведение служб
Проблема заключается в следующем. В папке D:\Program Files (x86) находились программы со службами всё работало отлично до определённого момента после которого службы лежащие в нижестоящих папках перестали запускаться. При попытке запуска через net start 'ServiceName' появляется сообщение Служба не отвечает на управляющие функции NET HELPMSG 2186. Удаление и повторная установка служб ни чего не даёт. При переносе нижестоящих папок в любое другое местоположение службы запускаются. Пробовал удалять данную папку и создавать её снова но результат остался тем же. Есть у кого нибудь какие либо идеи по данному вопросу?
|
#2
|
|||
|
|||
Проблема решилась следующим образом.
Код:
procedure TTestService.ServiceAfterInstall(Sender: TService); var Reg: TRegistry; begin Reg := TRegistry.Create; try Reg.RootKey := HKEY_LOCAL_MACHINE; Reg.OpenKey('\SYSTEM\CurrentControlSet\Services\TestService', False); Reg.WriteString('ImagePath', '"' + ParamStr(0) + '"'); finally Reg.Free; end; end; http://www.sources.ru/msdn/library/createservice.shtml lpBinaryPathName Указатель на строку (заканчивающуюся нулём), которая содержит полный путь к исполняемому файлу сервиса. Если путь содержит пробелы, то он должен быть заключён в кавычки. Например, "d:\\my share\\myservice.exe" необходимо указать как "\"d:\\my share\\myservice.exe\"". Путь так же может содержать аргументы для автоматически-запускаемого сервиса. Например, "d:\\myshare\\myservice.exe arg1 arg2". Эти параметры передаются в точку входа сервиса (обычно в функцию main). Судя по всему винда обновилась и по каким то причинам даже если в пути нет пробелов его надо заключать в двойные кавычки. Теперь всё работает. Последний раз редактировалось lmikle, 12.10.2015 в 18:30. |
#3
|
|||
|
|||
А русских буквиц в пути случаем нет?
|
#4
|
|||
|
|||
Нет ни одной, но без двойных кавычек не работает.
|