是否可以记录谁启动或停止了Windows服务?

Hit*_*mer 17 c# windows-services

我有一些用C#编写的Windows服务.当有人停止或启动服务时,我希望能够确定它是谁并记录该信息.

我尝试了日志,Environment.UserName但即使在我的本地机器上,它也会评估为SYSTEM.

此外,目前这些服务正在Windows 2000服务器上运行.

JMD*_*JMD 14

在"系统"选项卡上的"事件查看器"("控制面板"|"管理工具"|"事件查看器")中,服务控制管理器记录启动和停止每个事件 我自己测试了这个并查看了结果.这让我有两件事:

  1. 您可以在服务控制管理器发生时查询或挂钩这些事件,或者
  2. 您绝对可以查询事件查看器的"系统"日志,以查找您的服务的这些事件.

希望能引导您找到解决方案.

  • 在"系统"选项卡上的"事件查看器"("控制面板"|"管理工具"|"事件查看器")中,服务控制管理器记录启动和停止每个事件的人员.我没有看到任何排序.我所看到的只是一条消息,例如`工作站服务进入了运行状态.但没有关于什么进程/服务导致它启动,甚至在细节中.最接近原因的是*Source*字段,除了Windows Update之外,几乎总是服务控制器(很好),它没有说明谁/什么要求SC运行服务. (10认同)

KER*_*ERR 6

  • 您可以通过服务控制管理器过滤系统事件日志 在此处输入图片说明

事件 ID 7040 - 涵盖服务启动类型更改(例如禁用、手动、自动)

事件 ID 7036 - 涵盖服务启动/停止

在此处输入图片说明

对于拥有 PowerShell 的其他人,您可以使用以下命令:

get-eventlog -source "Service Control manager" -LogName System | select message, timegenerated, username | Out-GridView
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明