我有一些用C#编写的windows服务。当有人停止或启动服务时,我希望能够确定它是谁并记录该信息。是否可以记录谁启动或停止了Windows服务?
我试过记录Environment.UserName
但即使在我的本地计算机上也评估为SYSTEM。
此外,这些服务暂时在Windows 2000服务器上运行。
我有一些用C#编写的windows服务。当有人停止或启动服务时,我希望能够确定它是谁并记录该信息。是否可以记录谁启动或停止了Windows服务?
我试过记录Environment.UserName
但即使在我的本地计算机上也评估为SYSTEM。
此外,这些服务暂时在Windows 2000服务器上运行。
在系统选项卡上的事件查看器(控制面板|管理工具|事件查看器)中,服务控制管理器记录启动和停止每个事件的日志。我刚刚亲自测试过,并查看了结果。这使我两件事情:
希望能将您引导至您的解决方案。
有可能没有办法。您在环境用户获得的任何常规.NET方法都将返回其服务运行凭据的用户(通常是SYSTEM,LOCAL SERVICE,NETWORK SERVICE等)。
我怎么会这样做是轮询系统,看看用户是否登录,并假设用户做到了。当然,这会折扣系统由于某种原因而关闭的服务(假定您的服务不可用),并且只能在多个用户同时登录时帮助您缩小服务范围(但是,您可以总是记录他们两个)。
您可以根据这篇文章
另外启用审核,也可能是在调用OnStop提醒电子邮件给自己()方法是一个好主意。
是的!这就是我在找什么,我只是需要一种方法来找出是谁停止了服务,它在 - 系统事件日志中。谢谢! – HitLikeAHammer 2009-01-30 18:49:05
`在系统中的事件查看器(控制面板|管理工具|事件查看器)内选项卡中,服务控制管理器记录启动和停止每个事件的日志。“我看不到任何此类信息,我所看到的只是一条消息,如”Workstation服务进入运行状态“,但没有说明启动它的流程/即使在细节中。最接近原因的是* Source *字段除了Windows Update之外,它几乎总是服务控制器(好吧,那个),它没有说什么要求SC来运行服务。 – Synetech 2013-03-12 18:09:55