Самый простой способ перезапустить сервис на удаленный компьютер

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

56
задан Dave Forgac 10 March 2011 в 15:21
поделиться

6 ответов

С Windows XP можно использовать sc.exe для взаимодействия с локальными и удаленными сервисами. Запланируйте задачу выполнить пакетный файл, подобный этому:

sc \\server stop service
sc \\server start service

Удостоверяются выполнения задачи под учетной записью пользователя, привилегированной на целевом сервере.

psservice.exe от Sysinternals PSTools также сделал бы задание:

psservice \\server restart service
97
ответ дан Tomalak 26 November 2019 в 17:15
поделиться

ОПИСАНИЕ: SC является программой командной строки, используемой для связи с Сервисным Контроллером NT и услуг. ИСПОЛЬЗОВАНИЕ: кв/см [команда] [сервисное название]...

    The option <server> has the form "\\ServerName"
    Further help on commands can be obtained by typing: "sc [command]"
    Commands:
      query-----------Queries the status for a service, or
                      enumerates the status for types of services.
      queryex---------Queries the extended status for a service, or
                      enumerates the status for types of services.
      start-----------Starts a service.
      pause-----------Sends a PAUSE control request to a service.
      interrogate-----Sends an INTERROGATE control request to a service.
      continue--------Sends a CONTINUE control request to a service.
      stop------------Sends a STOP request to a service.
      config----------Changes the configuration of a service (persistant).
      description-----Changes the description of a service.
      failure---------Changes the actions taken by a service upon failure.
      qc--------------Queries the configuration information for a service.
      qdescription----Queries the description for a service.
      qfailure--------Queries the actions taken by a service upon failure.
      delete----------Deletes a service (from the registry).
      create----------Creates a service. (adds it to the registry).
      control---------Sends a control to a service.
      sdshow----------Displays a service's security descriptor.
      sdset-----------Sets a service's security descriptor.
      GetDisplayName--Gets the DisplayName for a service.
      GetKeyName------Gets the ServiceKeyName for a service.
      EnumDepend------Enumerates Service Dependencies.

    The following commands don't require a service name:
    sc <server> <command> <option>
      boot------------(ok | bad) Indicates whether the last boot should
                      be saved as the last-known-good boot configuration
      Lock------------Locks the Service Database
      QueryLock-------Queries the LockStatus for the SCManager Database

ПРИМЕР: кв/см запускает MyService

13
ответ дан dkretz 26 November 2019 в 17:15
поделиться

Если это не требует человеческого взаимодействия, которое означает, что не будет никакого UI, который вызывает эту операцию, и я предполагаю, что это перезапустило бы в некотором интервале набора? Если у Вас есть доступ к машине, Вы могли бы просто поставить запланированную задачу для выполнения пакетного файла с помощью старой доброй СЕТЕВОЙ ОСТАНОВКИ и СЕТЕВОГО ЗАПУСКА

net stop "DNS Client"
net start "DNS client"

или если Вы хотите стать немного более сложными, Вы могли бы попробовать Powershell

5
ответ дан kd7 26 November 2019 в 17:15
поделиться

взгляд sysinternals для множества инструментов, чтобы помочь Вам достигнуть той цели. psService, например, перезапустил бы сервис на удаленную машину.

2
ответ дан Raz 26 November 2019 в 17:15
поделиться

Я рекомендую метод, данный doofledorfer.

, Если Вы действительно хотите сделать это через прямой вызов API, затем посмотрите функция OpenSCManager . Ниже демонстрационные функции, чтобы взять название машины и сервис, и остановить или запустить их.

function ServiceStart(sMachine, sService : string) : boolean;  //start service, return TRUE if successful
var schm, schs : SC_Handle;
    ss         : TServiceStatus;
    psTemp     : PChar;
    dwChkP     : DWord;
begin
  ss.dwCurrentState := 0;
  schm := OpenSCManager(PChar(sMachine),Nil,SC_MANAGER_CONNECT);  //connect to the service control manager

  if(schm > 0)then begin // if successful...
    schs := OpenService( schm,PChar(sService),SERVICE_START or SERVICE_QUERY_STATUS);    // open service handle, start and query status
    if(schs > 0)then begin     // if successful...
      psTemp := nil;
      if (StartService(schs,0,psTemp)) and (QueryServiceStatus(schs,ss)) then
        while(SERVICE_RUNNING <> ss.dwCurrentState)do begin
          dwChkP := ss.dwCheckPoint;  //dwCheckPoint contains a value incremented periodically to report progress of a long operation.  Store it.
          Sleep(ss.dwWaitHint);  //Sleep for recommended time before checking status again
          if(not QueryServiceStatus(schs,ss))then
            break;  //couldn't check status
          if(ss.dwCheckPoint < dwChkP)then
            Break;  //if QueryServiceStatus didn't work for some reason, avoid infinite loop
        end;  //while not running
      CloseServiceHandle(schs);
    end;  //if able to get service handle
    CloseServiceHandle(schm);
  end;  //if able to get svc mgr handle
  Result := SERVICE_RUNNING = ss.dwCurrentState;  //if we were able to start it, return true
end;

function ServiceStop(sMachine, sService : string) : boolean;  //stop service, return TRUE if successful
var schm, schs : SC_Handle;
    ss         : TServiceStatus;
    dwChkP     : DWord;
begin
  schm := OpenSCManager(PChar(sMachine),nil,SC_MANAGER_CONNECT);

  if(schm > 0)then begin
    schs := OpenService(schm,PChar(sService),SERVICE_STOP or SERVICE_QUERY_STATUS);
    if(schs > 0)then begin
      if (ControlService(schs,SERVICE_CONTROL_STOP,ss)) and (QueryServiceStatus(schs,ss)) then
        while(SERVICE_STOPPED <> ss.dwCurrentState) do begin
          dwChkP := ss.dwCheckPoint;
          Sleep(ss.dwWaitHint);
          if(not QueryServiceStatus(schs,ss))then
            Break;

          if(ss.dwCheckPoint < dwChkP)then
            Break;
        end;  //while
      CloseServiceHandle(schs);
    end;  //if able to get svc handle
    CloseServiceHandle(schm);
  end;  //if able to get svc mgr handle
  Result := SERVICE_STOPPED = ss.dwCurrentState;
end;
1
ответ дан JosephStyons 26 November 2019 в 17:15
поделиться
  1. открытая база данных диспетчера управления службами с помощью openscmanager
  2. получает зависимое сервисное использование EnumDependService ()
  3. Остановка все зависимое сервисное использование ChangeConfig () отправляющий Стоповый сигнал в эту функцию, если они запускаются
  4. , практическая эксплуатация остановки
  5. Добирается, все Сервисные зависимости сервиса
  6. Запускают все сервисное использование зависимостей StartService (), если они останавливаются
  7. , Запускают практическую эксплуатацию

Таким образом сервис перезапущен заботящийся все зависимости.

1
ответ дан svick 26 November 2019 в 17:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: