2009-01-30 67 views
14

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

我试过记录Environment.UserName但即使在我的本地计算机上也评估为SYSTEM。

此外,这些服务暂时在Windows 2000服务器上运行。

回答

12

在系统选项卡上的事件查看器(控制面板|管理工具|事件查看器)中,服务控制管理器记录启动和停止每个事件的日志。我刚刚亲自测试过,并查看了结果。这使我两件事情:

  1. 您可以查询或钩从服务控制管理器中的事件,因为它们发生,或
  2. 你绝对可以只查询事件查看器的“系统”日志查看为您的服务的这些事件。

希望能将您引导至您的解决方案。

+0

是的!这就是我在找什么,我只是需要一种方法来找出是谁停止了服务,它在 - 系统事件日志中。谢谢! – HitLikeAHammer 2009-01-30 18:49:05

+9

`在系统中的事件查看器(控制面板|管理工具|事件查看器)内选项卡中,服务控制管理器记录启动和停止每个事件的日志。“我看不到任何此类信息,我所看到的只是一条消息,如”Workstation服务进入运行状态“,但没有说明启动它的流程/即使在细节中。最接近原因的是* Source *字段除了Windows Update之外,它几乎总是服务控制器(好吧,那个),它没有说什么要求SC来运行服务。 – Synetech 2013-03-12 18:09:55

0

有可能没有办法。您在环境用户获得的任何常规.NET方法都将返回其服务运行凭据的用户(通常是SYSTEM,LOCAL SERVICE,NETWORK SERVICE等)。

我怎么会这样做是轮询系统,看看用户是否登录,并假设用户做到了。当然,这会折扣系统由于某种原因而关闭的服务(假定您的服务不可用),并且只能在多个用户同时登录时帮助您缩小服务范围(但是,您可以总是记录他们两个)。

0
  1. 只需打开事件查看器(开始菜单 - >搜索“事件”事件查看器会来,打开它)
  2. 展开“登录Windows”事件查看器左边的菜单上。
  3. 点击应用程序。 (它会显示你的应用程序错误,在“常规”选项卡上的说明。
  4. 再次尝试启动您的服务,并从事件查看器中看到的是确切的原因在“常规”选项卡中短暂停留。
相关问题