Можно ли войти, кто запустил или остановил службу Windows? - PullRequest
15 голосов
/ 30 января 2009

У меня есть некоторые службы Windows, написанные на C #. Когда кто-нибудь останавливает или запускает службу, я хотел бы иметь возможность определить, кто это был, и записать эту информацию.

Я попытался записать Environment.UserName, но это оценивается как SYSTEM даже на моей локальной машине.

Кроме того, в настоящее время эти службы работают на сервере Windows 2000.

Ответы [ 5 ]

14 голосов
/ 30 января 2009

В средстве просмотра событий (Панель управления | Администрирование | Просмотр событий) на вкладке Система диспетчер управления службами регистрирует, кто запускает и останавливает каждое событие. Я только что проверил это сам и посмотрел результаты. Это приводит меня к двум вещам:

  1. Вы можете запрашивать или перехватывать эти события из диспетчера управления службами по мере их возникновения, или
  2. Вы, безусловно, можете просто запросить «Системный» журнал средства просмотра событий, чтобы найти эти события для вашей службы.

Надеюсь, что это приведет вас к решению.

2 голосов
/ 26 марта 2012

Вы можете включить аудит по этой статье

http://windowsitpro.com/systems-management/access-denied-auditing-users-who-might-be-starting-and-stopping-services

Кроме того, может быть хорошей идеей оповещать себя по электронной почте с помощью метода OnStop ().

1 голос
/ 14 ноября 2018
  • Вы можете отфильтровать системный журнал событий с помощью Service Control Manager. enter image description here

Событие с идентификатором 7040 - охватывает изменение типа запуска службы (например, отключено, вручную, автоматически)

Событие с кодом 7036 - охватывает запуск / остановку службы

enter image description here

Для других, у которых есть PowerShell, вы можете использовать это:

get-eventlog -source "Service Control manager" -LogName System | select message, timegenerated, username | Out-GridView

enter image description here

0 голосов
/ 16 мая 2017
  1. Просто откройте Event Viewer (меню Пуск -> Поиск "Event" Event Viewer придет, откройте его)
  2. Разверните «Журнал Windows» в левом меню средства просмотра событий.
  3. Нажмите на приложение. (Будет отображена ошибка вашего приложения с описанием на вкладке «Общие».
  4. Снова попробуйте запустить службу и в средстве просмотра событий увидеть точную причину кратковременной остановки во вкладке «Общие».
0 голосов
/ 30 января 2009

Вероятно, нет пути. Любой из обычных способов .NET, которые вы получаете у пользователя среды, собирается вернуть пользователя, чьи учетные данные запускает служба (обычно это СИСТЕМА, ЛОКАЛЬНАЯ СЛУЖБА, СЕТЕВАЯ СЛУЖБА и т. Д.).

Как бы я мог это сделать, это опросить систему, чтобы узнать, вошел ли пользователь в систему, и предположить, что это сделал пользователь. Конечно, это делает скидку на сервисы, которые по какой-то причине отключены системой (предположительно, ваш сервис не будет), и может помочь вам сузить его, только если одновременно зарегистрировано более одного пользователя (но тогда вы можете всегда регистрируйте их обоих).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...