Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2008, 15:59   #31
dimonbest
Форумчанин
 
Регистрация: 07.02.2008
Сообщений: 150
По умолчанию

C этим всем поразбирался:
Код:
procedure TService1.ServiceAfterInstall(Sender: TService);   
begin  
sleep(1000);   
service1.DoStart;   
end;
В этом случае служба таки запускалась, только не от СИСТЕМ, а от текущего пользователя. И что характерно в списке служб была незапущенной, а была видна только в списке процессов. А я ее тогда еще вручную запуслил, она запустилась как СИСТЕМ, и получилось что работало 2 одинаковых службы, поэтому письмо 2 раза и отсылалось.
Возникла следующая проблема (надеюсь что последняя):
создал одну службу. инсталировал, все хорошо. Создал вторую (соответственно с другим кодом и другим именем службы), а при инсталяции пишет, что такая служба уже существует. Когда деинсталирую первую, то вторая инсталируется нормально. В чем может быть проблема?
dimonbest вне форума Ответить с цитированием
Старый 25.03.2008, 10:26   #32
dimonbest
Форумчанин
 
Регистрация: 07.02.2008
Сообщений: 150
По умолчанию

В свойствах службы на вкладке восстановление есть действие виндовс при сбое работы службы (перезапуск). А как задать это свойство через DELPHI?
dimonbest вне форума Ответить с цитированием
Старый 25.03.2008, 18:05   #33
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от dimonbest Посмотреть сообщение
В свойствах службы на вкладке восстановление есть действие виндовс при сбое работы службы (перезапуск). А как задать это свойство через DELPHI?
Не знаю, как там насчёт Delphi, но вообще это делается

1. Установкой параметра FailureActions и, если нужно, FailureCommand в HKLM\System\CurrentControlSet\Servi ces\[Имя_Службы] (Что не есть удобно - нужно знать формат параметра FailureActions)
2. Функцией ChangeServiceConfig2
ChangeServiceConfig2
Changing a Service's Configuration
B_N вне форума Ответить с цитированием
Старый 28.03.2008, 14:03   #34
dimonbest
Форумчанин
 
Регистрация: 07.02.2008
Сообщений: 150
По умолчанию

Cпасибо за совет, мне подходит вариант 1.
Еще такой вопросик появился:
У службы можно сделать описание. А в делфи такого свойства я не нашел. Как вообще добавляется описание к службе?
dimonbest вне форума Ответить с цитированием
Старый 31.01.2009, 14:33   #35
dimonbest
Форумчанин
 
Регистрация: 07.02.2008
Сообщений: 150
По умолчанию

Появилась проблема.
Создал службу, проект прикрепил. Инсталирую, запускаю.
Она работает.
Дальше я ее пытаюсь остановить (через мой компьютер, управление, службы и приложения). Она не останавливается, выдает ошибку (скрин прикрепил). В чем может быть проблема, никто с этим не сталкивался?
Изображения
Тип файла: jpg 1.JPG (13.8 Кб, 181 просмотров)
Вложения
Тип файла: rar tmp.rar (173.8 Кб, 32 просмотров)
dimonbest вне форума Ответить с цитированием
Старый 31.01.2009, 14:43   #36
Leloush
Пользователь
 
Регистрация: 31.01.2009
Сообщений: 32
По умолчанию

Как я понимаю вы хотите создать вредоносную программу(ну чисто ради знаний, никакого распространения не планируете, ведь так? )))), и хотите процесс показать как сервисный процесс(служба), но я бы так не делал, сейчас любой самый вшивый антивирус проверяет даже службы, поэтому проще сделать 2 ДЛЛ, сделать внедрение первой в антивирус (она должна быть с виду как можно более приличной, весь код должен сводится к подвисанию антивируса "мирными способами"), после чего внедрить вторую, которая захватит антивирус и будет заниматься от его имени теми делами какими вы хотите )
Leloush вне форума Ответить с цитированием
Старый 01.02.2009, 20:35   #37
dimonbest
Форумчанин
 
Регистрация: 07.02.2008
Сообщений: 150
По умолчанию

Нет, это не вирус.
Сейчас службу останавливаю следующим образом:
Раз в секунду проверяю значени определенной переменной в реестре, и при определенном значении в службе даю команду:
Код:
service1.dostop
и она останавливается... Но это кривовато.
Нашел в DW код для остановки службы. Он не работает. Тогда попытался вручную остановить службу, и вышла такая ошибка...
dimonbest вне форума Ответить с цитированием
Старый 02.08.2010, 15:31   #38
dimonbest
Форумчанин
 
Регистрация: 07.02.2008
Сообщений: 150
По умолчанию

Господа доброго времени суток.
Появилась проблема со службой.
Вот код остановки службы:
Код:
function ServiceStop(aMachine,aServiceName: string ): boolean;
// aMachine это UNC путь, либо локальный компьютер если пусто
var
  h_manager, h_svc: SC_Handle;
  svc_status: TServiceStatus;
  dwCheckPoint: DWord;
begin
  h_manager:=OpenSCManager(PChar(aMachine),nil, SC_MANAGER_CONNECT);
  if h_manager > 0 then
  begin
    h_svc := OpenService(h_manager,PChar(aServiceName),
    SERVICE_STOP or SERVICE_QUERY_STATUS);
    if h_svc > 0 then
    begin
      if(ControlService(h_svc,SERVICE_CONTROL_STOP, svc_status))then
      begin
        if(QueryServiceStatus(h_svc,svc_status))then
        begin
          while(SERVICE_STOPPED <> svc_status.dwCurrentState)do
          begin
            dwCheckPoint := svc_status.dwCheckPoint;
            Sleep(svc_status.dwWaitHint);
            if(not QueryServiceStatus(h_svc,svc_status))then
            begin
              // couldn't check status
//              showmessage
              break;
            end;
            if(svc_status.dwCheckPoint < dwCheckPoint)then
              break;
          end;
        end;
      end;
      CloseServiceHandle(h_svc);
    end;
    CloseServiceHandle(h_manager);
  end;
  Result := SERVICE_STOPPED = svc_status.dwCurrentState;
end;
В WINDOWS XP проблем никаких нет. А вот в WINDOWS 7 работать не хочет/ Функция просто ничего не делает... Как можно модифицировать функцию, чтобы работала и на семерке?
Спасибо!
dimonbest вне форума Ответить с цитированием
Старый 02.08.2010, 16:32   #39
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Запускать под админом.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 02.08.2010, 17:02   #40
dimonbest
Форумчанин
 
Регистрация: 07.02.2008
Сообщений: 150
По умолчанию

Я и есть под пользователем администратор. Данная функция не помогает. Приходится вручную заходить в службы и запускать ее там, что не есть правильно...
P.S. Может есть другая функция запуска/остановки службы, для семерки и висты?

Последний раз редактировалось dimonbest; 02.08.2010 в 17:04.
dimonbest вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создать программу Александр Ф. Фриланс 4 10.11.2008 18:14
Как создать пароль на программу? Rahim1993 Общие вопросы Delphi 3 11.07.2008 06:25
ТРЕБУЕТСЯ СОЗДАТЬ ПРОГРАММУ ЭДЛ Фриланс 8 14.03.2008 13:11
Помогите создать программу на С++ Rembo Помощь студентам 1 25.01.2008 20:46
КАК создать программу тест??? ivp88 Общие вопросы Delphi 4 02.04.2007 19:12