Как узнать кто остановил службу windows

  • Remove From My Forums

 locked

Остановка службы — кто сделал?

  • Вопрос

  • Добрый день!

    Имеется сервер Windows Server 2008 r2 — он же сервер 1С.

    Сегодня остановилась служба: The Агент сервера 1С:Предприятия 8.2 (x86-64) service entered the stopped state.

    Не могу найти информацию о том, кто остановил службу (какой пользователь)?

    Log Name:      System
    Source:        Service Control Manager
    Date:          25.04.2013 15:47:14
    Event ID:      7036
    Task Category: None
    Level:         Information
    Keywords:      Classic
    User:          N/A
    Computer:      server1.test.corp
    Description:
    The Агент сервера 1С:Предприятия 8.2 (x86-64) service entered the stopped state.
    Event Xml:
    <Event xmlns=»http://schemas.microsoft.com/win/2004/08/events/event»>
      <System>
        <Provider Name=»Service Control Manager» Guid=»{555908d1-a6d7-4695-8e1e-26931d2012f4}» EventSourceName=»Service Control Manager» />
        <EventID Qualifiers=»16384″>7036</EventID>
        <Version>0</Version>
        <Level>4</Level>
        <Task>0</Task>
        <Opcode>0</Opcode>
        <Keywords>0x8080000000000000</Keywords>
        <TimeCreated SystemTime=»2013-04-25T11:47:14.179396100Z» />
        <EventRecordID>32646</EventRecordID>
        <Correlation />
        <Execution ProcessID=»656″ ThreadID=»112372″ />
        <Channel>System</Channel>
        <Computer>server1.test.corp</Computer>
        <Security />
      </System>
      <EventData>
        <Data Name=»param1″>Агент сервера 1С:Предприятия 8.2 (x86-64)</Data>
        <Data Name=»param2″>stopped</Data>
        <Binary>310043003A0045006E0074006500720070007200690073006500200038002E003200200053006500720076006500720020004100670065006E007400200028007800380036002D003600340029002F0031000000</Binary>
      </EventData>
    </Event>

    • Изменено

      25 апреля 2013 г. 13:44

Ответы

  • В качестве дополнения- групповой политикой действительно можно назначить учетные записи, имеющие право управлять службой. Но ответа на вопрос, какая именно УЗ выполнила какие действия, Вы не получите. Более того, неправильно раздав права запуска\остановки
    сервиса, можете сами лишиться(и других лишить) его управления. Делать это нужно осторожно, и понимать, что делаете.

    Также необходимо понимать, что остановить службу мог только пользователь, обладающий как минимум правами локального администратора на сервере. Возможно, это сузит круг потенциальных «вредителей»

    Настраивайте
    аудит.

    http://technet.microsoft.com/ru-ru/library/dd560628(v=ws.10).aspx

    Тут можно почерпнуть, что еще можно настроить , улучшить и  тд.

    Новые возможности Windows Server 2008 R2

    • Предложено в качестве ответа
      AndricoRusEditor
      26 апреля 2013 г. 5:38
    • Помечено в качестве ответа
      Petko KrushevMicrosoft contingent staff
      26 апреля 2013 г. 9:57

I have some windows services written in C#. When somebody stops or starts the service, I would like to be able to determine who it was and log that information.

I tried logging Environment.UserName but that evaluates to SYSTEM even on my local machine.

Also, for the time being these services are running on Windows 2000 server.

asked Jan 30, 2009 at 18:34

HitLikeAHammer's user avatar

HitLikeAHammerHitLikeAHammer

2,6853 gold badges37 silver badges53 bronze badges

Within the Event Viewer (Control Panel | Administrative Tools | Event Viewer) on the System tab the Service Control Manager logs who started and stop each event. I’ve just tested this myself and viewed the results. This leads me to two things:

  1. You may be able to query or hook those events from the Service Control Manager as they happen, or
  2. You can definitely just query the Event Viewer’s «System» log to look for those events for your Service.

Hope that leads you to your solution.

answered Jan 30, 2009 at 18:44

JMD's user avatar

JMDJMD

7,3393 gold badges29 silver badges39 bronze badges

3

  • You can filter the System EventLog by Service Control Manager
    enter image description here

Event ID 7040 — covers Service start type change (eg disabled, manual, automatic)

Event ID 7036 — covers Service start/stop

enter image description here

For others that have PowerShell, you can use this:

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

enter image description here

answered Nov 14, 2018 at 3:39

KERR's user avatar

KERRKERR

1,34018 silver badges13 bronze badges

1

There probably isn’t a way. Any of the normal .NET ways that you get at the environment’s user are going to return the user whose credentials the service runs with (which will typically be SYSTEM, LOCAL SERVICE, NETWORK SERVICE, etc).

How I’d probably do it is poll the system to see if a user is logged in, and assume that user did it. Of course, this discounts services that are shut down by the system for some reason (presumably your service would not be), and can only help you narrow it down if more than one user is logged in at one time (but then, you could always log both of them).

answered Jan 30, 2009 at 18:38

TheSmurf's user avatar

TheSmurfTheSmurf

15.3k3 gold badges40 silver badges48 bronze badges

1

  1. Just open Event Viewer (Start menu -> Search «Event» Event Viewer will come, open it)
  2. Expand ‘Windows Log’ on Event viewer left menu.
  3. Click on Application. (It will show your application error with description in ‘general’ tab.
  4. Again try to start your service and from event viewer see what is exact cause for stopping briefly in ‘general’ tab.

answered May 16, 2017 at 9:09

Tariqul Shakil's user avatar

2

Столкнулся с такой задачей: требовалось знать кто остановил критически важную службу на Windows-сервере. Как оказалось аудит этого события настраивается немного по-другому, в отличии, например, от файлового сервера. Что для этого требуется:

1) для начала скажу, что нельзя настроить аудит сразу всех служб — нужно выбрать конкретные службы для их аудита. Узнаем короткое имя службы, например, через команду PS get-service и в столбце «Name» оно будет отображено

2) в cmd выполняем команду sc sdshow [короткое имя службы]. Выведется строка примерно такого вида D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU). Скопируйте ее в блокнот и в конце добавьте строку S:(AU;SAFA;RPWPDT;;;WD). Буква «D» в начале строки означает начало списка доступа DACL, а буква «S» — список доступа SACL, который используется при логировании. Если выводимая строка в команде «sc sdshow» уже будет содержать SACL, то удаляем ее и добавляем ту, которая указана выше.

3) выполняем в cmd команду sc sdset [короткое имя службы][получившаяся новая строка]. После этого должна появиться строка [SC] SetServiceObjectSecurity: успех


4) командой auditpol /get /category:* проверяем какой аудит включен в системе. Нам необходимо, чтобы был включен аудит для подкатегорий «Другие события доступа к объекту» и «Работа с дескриптором». В английской Windows они соответственно называются «Other Object Access Events» и  «Handle Manipulation». Если аудит не настроен, то делаем это через групповые политики, если компьютер в домене или через команды auditpol /set /subcategory:"Другие события доступа к объекту" /success:enable /failure:disable и  auditpol /set /subcategory:"Работа с дескриптором" /success:enable /failure:disable, если компьютер не в домене.

5) фильтруем журнал безопасности Windows по коду события «4656» и можем видеть событие в журнале


Аудит настроен.

Содержание

  • 1 Как узнать, когда последний раз использовалась служба Windows?
  • 2 Что вызывает остановку службы Windows?
  • 3 Как вы следите за сервисом?
  • 4 Как узнать время последнего сброса IISReset?
  • 5 Как перезапустить службу в PowerShell?
  • 6 Какие есть инструменты мониторинга?
  • 7 Какие есть хорошие методы мониторинга?
  • 8 Как проверить, запущена ли служба в Windows Powershell?
  • 9 Как я могу проверить историю перезагрузок?
  • 10 Как мне узнать, почему мой сервер выключен?
  • 11 Кто перезапустил Windows Server?

Чтобы найти запись журнала событий, показывающую, когда ваша служба была запущена в последний раз:

  1. Откройте средство просмотра событий из панели управления (найдите его по имени).
  2. В левом столбце перейдите в Журналы Windows> Система:
  3. Нажмите «Найти…» справа, чтобы открыть окно «Найти».

9 янв. 2017 г.

Что вызывает остановку службы Windows?

Служба может остановиться, если возникнет необработанное исключение. Убедитесь, что вы обрабатываете все исключения. Кроме того, если служба использует какие-либо COM-объекты, у меня в прошлом были исключения, которые не могли быть перехвачены в моем. NET 2.0.

Как вы следите за сервисом?

Вы можете использовать ManageEngine Free Windows Service Monitor. Используя это, вы можете запускать / останавливать службы в удаленной системе. +1, чтобы убедиться, что службы отслеживаются на локальном компьютере.

7 ответов

  1. «Перезапустить службу»
  2. «Запустить программу»
  3. «Перезагрузите компьютер»

17 нояб. 2008 г.

Как узнать время последнего сброса IISReset?

  1. Откройте средство просмотра событий, перейдите в «Журналы Windows» -> «Система».
  2. на правой панели «Действия» выберите «фильтровать текущий журнал …»
  3. В разделе «Источники событий:» выберите или введите «IIS-IISReset».
  4. нажмите ОК.

8 авг. 2019 г.

Как перезапустить службу в PowerShell?

Чтобы запустить или остановить службу через PowerShell, вы можете использовать командлет Start-Service или Stop Service, за которым следует имя службы, которую вы хотите запустить или остановить. Например, вы можете ввести Stop-Service DHCP или Start-Service DHCP.

Какие есть инструменты мониторинга?

Инструменты мониторинга используются для постоянного отслеживания состояния используемой системы, чтобы как можно раньше предупреждать о сбоях, дефектах или проблемах и улучшать их. Существуют инструменты мониторинга серверов, сетей, баз данных, безопасности, производительности, использования веб-сайтов и Интернета, а также приложений.

Какие есть хорошие методы мониторинга?

В МиО существует несколько типов мониторинга, включая мониторинг процессов, технический мониторинг, мониторинг допущений, финансовый мониторинг и мониторинг воздействия.

  • Мониторинг процесса / мониторинг физического прогресса. …
  • Технический мониторинг. …
  • Предположительный мониторинг. …
  • Финансовый мониторинг. …
  • Мониторинг воздействия. …
  • Рекомендации.

2 июл. 2013 г.

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

Чтобы найти имя службы и отображаемое имя каждой службы в вашей системе, введите Get-Service. Имена служб отображаются в столбце «Имя», а отображаемые имена — в столбце «Отображаемое имя». При сортировке в возрастающем порядке по значению свойства Status остановленные службы отображаются перед запущенными службами.

Как я могу проверить историю перезагрузок?

Чтобы выяснить, когда ваш компьютер был в последний раз перезагружен, вы можете просто открыть средство просмотра событий, зайти в Журналы Windows -> Системный журнал, а затем отфильтровать по идентификатору события 6006, который указывает на то, что служба журнала событий была отключена — один из последнее, что происходит перед перезагрузкой.

Как мне узнать, почему мой сервер выключен?

Нажмите клавиши Windows + R, чтобы открыть диалоговое окно «Выполнить», введите eventvwr. msc и нажмите Enter. На левой панели средства просмотра событий дважды щелкните / коснитесь «Журналы Windows», чтобы развернуть его, щелкните «Система», чтобы выбрать ее, затем щелкните правой кнопкой мыши «Система» и щелкните / коснитесь «Фильтровать текущий журнал».

Кто перезапустил Windows Server?

Войдите в Windows Server. Запустите средство просмотра событий (введите при запуске eventvwr). В консоли просмотра событий разверните Журналы Windows.

Если в вашей организации несколько системных администраторов, у вас периодически может возникать вопрос “Кто перезагрузил сервер?”. В этой статье я покажу как найти определения пользователя, который перезагрузил или выключил компьютер/сервер Windows.

Информация об учетной записи, которая отправила команду перезагрузки Windows сохраняется в журнал событий.

  1. Откройте консоль Event Viewer (
    eventvwr.msc
    ) и перейдите в раздел Windows Logs -> System;
  2. Включите фильтр журнала событий, выбрав в контекстном меню пункт Filter Current Log; фильтр журнала событий windows
  3. В поле фильтра укажите EventID 1074 и нажмите OK; событие 1074 кто перезагрузил или выключил windows
  4. В журнале событий останутся только события выключения (перезагрузки), откройте любое из них;
  5. В событии от источника User32 будет указан пользователь, который инициировал перезагрузку Windows. В этом примере это пользователь a.novak. определить пользователя, который перезагрузил windows
The process C:\Windows\Explorer.EXE (MSK-DC03) has initiated the restart of computer MSK-DC03 on behalf of user WINITPRO\a.novak for the following reason: Other (Unplanned)
Reason Code: 0x5000000
Shutdown Type: restart
Comment:

Рассмотрим еще несколько примеров событий перезагрузки/выключения Windows. В качестве пользователя, запустившего перезагрузку операционную систему может быть указан NT AUTHORITY\SYSTEM.

Это означает, что перезагрузку инициировала одна из служб или программ Windows, запущенная от имени SYSTEM.. Например, это может быть процесс службы
wuauserv
, который закончил установку обновлений Windows и выполнил перезагрузку согласно настроенной политике Windows Update или с помощью задания модуля PSWindowsUpdate.

The process C:\Windows\uus\AMD64\MoUsoCoreWorker.exe (WKS-PC11S22) has initiated the restart of computer WKS-PC11S22 on behalf of user NT AUTHORITY\SYSTEM for the following reason: Operating System: Service pack (Planned)
Reason Code: 0x80020010
Shutdown Type: restart
Comment:

Если ваша Windows запущена внутри виртуальной машины VMware, то если выполнить Restart Guest из консоли управления VMware, событие (выключения) будет выглядеть так:

The process C:\Program Files\VMware\VMware Tools\vmtoolsd.exe (MSK-DC03) has initiated the shutdown of computer MSK-DC03 on behalf of user NT AUTHORITY\SYSTEM for the following reason: Legacy API shutdown
Reason Code: 0x80070000
Shutdown Type: shutdown

В этом случае выключение Windows также инициировано NT AUTHORITY\SYSTEM, т.к. службы интеграции VMware Tools запущены от имени системы.

Вы можете получить информацию о событиях перезагрузки с помощью PowerShell. Следующая команда выберет все события с EventID 1074:

Get-WinEvent -FilterHashtable @{logname=’System’;id=1074}|ft TimeCreated,Id,Message

Команда вернула описания всех событий перезагрузки и выключения Windows.

powershell - Get-EventLog событие 1074

Можно использовать следующий скрипт PowerShell, который возвращает более короткий список с последними десятью событиями с именами пользователей, и процессами, которые инициировали перезагрузку/выключение сервера.

Get-EventLog -LogName System |
where {$_.EventId -eq 1074} |select-object -first 10 |
ForEach-Object {
$rv = New-Object PSObject | Select-Object Date, User, Action, process, Reason, ReasonCode

if ($_.ReplacementStrings[4]) {
$rv.Date = $_.TimeGenerated
$rv.User = $_.ReplacementStrings[6]
$rv.Process = $_.ReplacementStrings[0]
$rv.Action = $_.ReplacementStrings[4]
$rv.Reason = $_.ReplacementStrings[2]
$rv
}
} | Select-Object Date, Action, Reason, User, Process |ft

скрипт powershell - кто перезагрузил windows

Также с помощью PowerShell можно быстро получить имя пользователя, который перезагрузил удаленный компьютер. Получить доступ к журналу событий на удаленном хосте можно с помощью формата Get-EventLog -ComputerName или вы можете подключиться к компьютеру через PSRemoting с помощью командлета Invoke-Command:

Invoke-Command -ComputerName rds2-12 -ScriptBlock {Get-WinEvent -FilterHashtable @{logname=’System’;id=1074} |select-object TimeCreated,Id,Message -first 1}

кто перезагрузил удаленный компьютер

По событию 1074 можно найти только причины корректных (штатных) перезагрузок сервера. Если Windows была перезагружена не штатно (например, при потере электропитания, или появления BSOD), тогда нужно искать события с EventID 6008.

The previous system shutdown at 4:34:49 AM on ‎1/‎17/‎2022 was unexpected.

EventID 6008 The previous system shutdown was unexpected.

И конечно, вы не сможете понять, кто перезагрузил Windows, если журналы событий были очищены, или старые события перезатерты более новыми (в домене желательно настроить увеличенный размер журналов событий с помощью GPO).

  • Как узнать код windows 10 для переустановки
  • Как узнать ключ windows вшитый в биос
  • Как узнать ключ продукта windows 10 через читать через командную строку
  • Как узнать количество ядер процессора windows 10
  • Как узнать кто запустил процесс windows