1

Доброе утро,
Я пишу процедуру установки для продукта, который встраивает службу Windows. Для установки этой службы используется оболочка, ссылающаяся на конфигурацию (java -jar wrapper.jar -i <product>.conf).

Теперь, кажется, есть какая-то связь с учетной записью: если служба Windows установлена как Account1, то Account2 не может быть запущена / остановлена.

Итак, я (Account2) хотел бы опросить службу Windows и сказать: «Если вы установлены с помощью Account1, то вам нужно удалить, и я сам установлю вас».

Теперь вопрос: как узнать, на какую учетную запись установлена упомянутая служба Windows? Я уже попробовал:

  • sc query <Service_Name>
  • sc qc <Service_Name>
  • sc qprivs <Service_Name>
  • sc qmanagedaccount <Service_Name>
  • sc quserservice <Service_Name>
  • wmic service <Service_Name> list full

(Видите ли, я отчаялся :-))

Ни одна из упомянутых команд не дала имя пользователя "Account1".

Кто-нибудь знает, как это сделать?

1 ответ1

0

Как узнать, в какой учетной записи установлена служба Windows?

Вы можете использовать wevtutil для получения этой информации:

Получить информацию о журналах событий и издателях. Архивирование журналов в автономном формате, Перечисление доступных журналов, Установка и удаление манифестов событий, выполнение запросов, Экспорт событий (из журнала событий, из файла журнала или с использованием структурированного запроса) в указанный файл, Очистка журналов событий ,

Событие, которое вам нужно найти, - это событие с кодом 4697: в системе установлена служба.:

Новый сервис был установлен пользователем, указанным в теме. Субъект часто определяет локальную систему (SYSTEM) для служб, установленных как часть собственных компонентов Windows, и поэтому вы не можете определить, кто на самом деле инициировал установку.

Предмет:

Пользователь и сеанс входа, который выполнил действие.

  • Идентификатор безопасности: SID учетной записи.
  • Имя учетной записи: имя для входа в учетную запись.
  • Домен учетной записи: домен или - в случае локальных учетных записей - имя компьютера.
  • Идентификатор входа - это полууникальный (уникальный между перезагрузками) номер, который идентифицирует сеанс входа в систему. Идентификатор входа в систему позволяет коррелировать в обратном направлении к событию входа в систему (4624), а также к другим событиям, зарегистрированным во время того же сеанса входа в систему.

Служебная информация:

  • Имя службы: внутреннее системное имя новой службы.Используйте "sc query", чтобы получить перекрестную ссылку на имена сервисов и их более привычные отображаемые имена.

Следующая команда покажет имя Account Name для последней созданной службы:

wevtutil query-events System /count:1 /rd:true /format:text /q:"Event[System[(EventID=4697)]]"

Если вы создали службу с помощью команды sc create , вам потребуется выполнить поиск по коду события: 7045 Источник: диспетчер управления службами и найти User Name:

wevtutil query-events System /count:1 /rd:true /format:text /q:"Event[System[(EventID=7045)]]"

Пример:

> sc create Notepad binpath= c:\windows\system32\Notepad.exe
[SC] CreateService SUCCESS

> wevtutil query-events System /count:1 /rd:true /format:text /q:"Event[System[(EventID=7045)]]"
Event[0]:
  Log Name: System
  Source: Service Control Manager
  Date: 2017-04-07T14:35:32.600
  Event ID: 7045
  Task: N/A
  Level: Information
  Opcode: N/A
  Keyword: Classic
  User: S-1-5-21-1699878757-1063190524-3119395976-1000
  User Name: Hal\DavidPostill
  Computer: Hal
  Description:
A service was installed in the system.

Service Name:  Notepad
Service File Name:  c:\windows\system32\Notepad.exe
Service Type:  user mode service
Service Start Type:  demand start
Service Account:  LocalSystem

Дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .