Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: CL | DM;

Вниз

Работа со службами   Найти похожие ветки 

 
Anti   (2004-10-25 22:08) [0]

Мастера! сложный вопрос. Как мне реалтизовать программу, которая должна изменять параметры запуска определенной службы. Главное чтобы были права системы/администратора.
Изменять параметры запуска то есть "Авто", "Вручную", "Отключена"


 
Cobalt ©   (2004-10-25 23:33) [1]

Поищи тут в форуме - наверняка найдёшь вопросы про службы.

К модераторам - эту тему, видимо, тоже пора в FAQ заносить


 
Anti   (2004-10-26 00:13) [2]

Нету +(((


 
sniknik ©   (2004-10-26 08:40) [3]

попробуй разобрать
http://delphi.chertenok.ru/forum/my_download.php?tema=del&action=show&id=173
наверняка найдеш то что нужно, если не в самом примере то в хелпе по используемым там функциям. (хотя бы будеш знать что искать)


 
Дмитрий Ботвин   (2004-10-26 09:10) [4]

Ну на счет сложного вопроса ты явно погорячился :-)))
Щас мы тебе поможем:

Подключай модуль Winsvc и вот тебе процедура:

//Установка типа запуска сервиса
procedure TForm1.Button1Click(Sender: TObject);
  var
    SCManager, Service: SC_HANDLE;
    TypeStart: DWORD;
    error, i: integer;
    ServiceName: String;
  begin
    error:=0;
    if ListView1.Items.Count=0 then exit;
    if not Assigned(ListView1.Selected) then Exit;
    i:=ListView1.Selected.Index;
    ServiceName:=ListView1.Items.Item[i].Caption;
    case ComboBox1.ItemIndex of
       0: TypeStart:=SERVICE_AUTO_START;
       1: TypeStart:=SERVICE_DEMAND_START;
       2: TypeStart:=SERVICE_DISABLED;
    end;
    //Получаем старые параметры конфигурации
    SCManager := OpenSCManager(PChar(Form1.CompName.Text), nil, GENERIC_READ);
    if SCManager <> 0 then
      begin
        Service := OpenService(SCManager, PChar(ServiceName), SERVICE_CHANGE_CONFIG);
        if Service <> 0 then
          begin
            //Устанавливаем новые параметры конфигурации
            if not(ChangeServiceConfig(Service, SERVICE_NO_CHANGE,
                   TypeStart, SERVICE_NO_CHANGE, nil, nil, nil, nil,
                   nil, nil, nil)) then error:=1;
            CloseServiceHandle(Service);
          end
        else error:=1;
        CloseServiceHandle(SCManager);
      end
    else error:=1;
    if error=1 then Application.MessageBox("Не могу изменить тип запуска сервиса!","Изменение конфигурации сервиса",
                    MB_OK+MB_ICONQUESTION)
    else CreateServiceList;
  end;

У меня в ListView1 формируется список служб, а в ComboBox1
заношу "Авто", "Вручную" и "Отключено".
Если интересно как получить список служб пиши. Если чё не понятно, тоже пиши :-)))


 
Дмитрий Ботвин   (2004-10-26 10:29) [5]

Забыл написать процедура CreateServiceList обновляет список
служб с учетом нового типа запуска. Удали её вызов из модуля...



Страницы: 1 вся ветка

Текущий архив: 2004.12.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
14-1100897306
dmk
2004-11-19 23:48
2004.12.12
Владельцам автомобилей


8-1094629162
dedMazDie
2004-09-08 11:39
2004.12.12
Загрузка части картинки


14-1101018661
Gero
2004-11-21 09:31
2004.12.12
Про память


3-1100240523
sergeii
2004-11-12 09:22
2004.12.12
Export v Excel


10-1054622130
OlegL
2003-06-03 10:35
2004.12.12
Server DLL &amp; .exe