Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
10 / 10 / 4
Регистрация: 14.01.2010
Сообщений: 80

Delphi: переименовать службу, запуск 2-х экземпляров службы

29.11.2014, 12:26. Показов 3394. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал службу, в системе имя службы и отображаемое имя берется из параметров: Name и DisplayName.

Стоит задача установить 2 (или более) таких служб на ОС.

При повторной установке, естественно, возникает ошибка, что служба с таким именем уже установлена.

Сделал следующее:
в событиях ServiceBeforeInstall и ServiceBeforeUninstall

Delphi
1
2
3
4
5
6
7
8
9
var
  Cnf1 : TStringList;
begin
  Cnf1 := TStringList.Create;
  Cnf1.LoadFromFile(extractfilepath(paramstr(0))+'\INI\Service.ini');
  Service1.Name         := Cnf1.Values['Name'];  // загружаю имя службы из настроек
  Service1.DisplayName  := Cnf1.Values['DisplayName'];
  Cnf1.Free;
end;
Понятно, что способ считывания немного кривой, в будущем переделаю на реестр или на TiniFile, вопрос в следующем:
С таким кодом удается установить в систему более 1 службы (предварительно скопировав ее в отдельную папку), проблем с удалением также не возникает.
Начинаются проблемы с запуском. При запуске служба запускается с Service1.Name установленным по умолчанию и зависает (не запускается). пробовал аналогичным способом подменить Service1.Name в событиях: ServiceCreate, ServiceExecute, ServiceStart, не помогает. Пробовал подменить имя тут:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
program WebTrader;
 
uses
  SvcMgr,
  WebTraderService in 'WebTraderService.pas' {Service1: TService},
  VariablesUnit in 'VariablesUnit.pas',
  CreateUnit in 'CreateUnit.pas',
  MySQLUnit in 'MySQLUnit.pas',
 
  Classes, SysUtils, Dialogs;
 
{$R *.RES}
var
  Cnf1 : TStringList;
begin
  Cnf1 := TStringList.Create;
  Cnf1.LoadFromFile(extractfilepath(paramstr(0))+'\INI\Service.ini');
  Service1.Name         := Cnf1.Values['Name'];  // загружаю имя службы из настроек
  Service1.DisplayName  := Cnf1.Values['DisplayName'];
  Cnf1.Free;
 
  Application.Initialize;
  Application.CreateForm(TService1, Service1);
  Application.Run;
end.
также безрезультатно.
Кто сталкивался? Как еще попробовать решить проблему?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.11.2014, 12:26
Ответы с готовыми решениями:

Сервисы или службы в delphi. Инсталл, деинсталл, запуск, остановка
Написал программку для инсталляции и пуска, остановки и деинсталляции Сервиса. Всё работает, но есть одна странность. Когда делаю...

Остановка и запуск службы(сервиса) из другой службы или из приложения не используя консоль
Добрый день! Компилятор Embarcadero XE8 Скажите, как можно остановить и запустить некую службу(сервис) зная его имя (например...

D7, запуск службы из под службы, возможно ли такое?
Hello All. Необходимо написать службу которая будет через определенное время (каждые 5 минут) проверять существует (зарегистрирована) ли...

1
10 / 10 / 4
Регистрация: 14.01.2010
Сообщений: 80
01.12.2014, 13:06  [ТС]
Нашел решение тут.
http://answerstop.org/question... e-applicat


Delphi
1
procedure ServiceLoadInfo(Sender: TObject);
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TServiceMain.ServiceLoadInfo(Sender : TObject);// new method, not an override
begin
  Name := ParamStr(2);
  DisplayName := ParamStr(3);
end;
 
procedure TServiceMain.ServiceBeforeInstall(Sender: TService);
begin
  ServiceLoadInfo(Self);
end;
procedure TServiceMain.ServiceCreate(Sender: TObject);
begin
  ServiceLoadInfo(Self);
end;
Буду переделывать на загрузку с моего файла, но главное заработал запуск службы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.12.2014, 13:06
Помогаю со студенческими работами здесь

Не запускаются службы (не удалось запустить дочернюю службу)
Добрый день, ситуация следующая... подключился к провайдеру дом.ру. Пришел техник и столкнулись со следующей проблемой, которую не смогли...

Написание службы - как заставить службу перезагружать Windows при её завершении?
Как заставить перезагружаться операционную систему, если пользователь останавливает службу через управление?

Размещение WCF службы в Windows (В клиенте не получается добавить ссылку на эту службу)
Здравствуйте, товарищи! В общем. Пытаюсь написать клиент-серверное приложение на WCF. (Пример брал из Троелсна) Я написал: 1....

Запуск нескольких экземпляров IntelliJ IDEA
Здравствуйте! Подскажите пожалуйста как сделать, чтобы запускалось несколько экземпляров IntelliJ IDEA (если допустим надо отдельный...

Программный запуск в потоке нескольких экземпляров приложения
Есть главное окно программы с некоторым набором элементов.Подскажите как, например по нажатию кнопки, запустить в потоке такое же окно. Я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru