我有一些用C#编写的Windows服务。当有人停止或启动服务时,我希望能够确定它是谁并记录该信息。
我尝试记录Environment.UserName
,但即使在我的本地计算机上也会评估为。
此外,目前这些服务正在Windows 2000服务器上运行。
答案 0 :(得分:14)
在“系统”选项卡上的“事件查看器”(“控制面板”|“管理工具”|“事件查看器”)中,服务控制管理器记录启动和停止每个事件的人员我自己测试了这个并查看了结果。这引出了两件事:
希望能引导您找到解决方案。
答案 1 :(得分:2)
您可以根据本文启用审核
此外,最好使用OnStop()方法向自己发送电子邮件。
答案 2 :(得分:1)
事件ID 7040-涵盖服务启动类型的更改(例如,禁用,手动,自动)
事件ID 7036-涉及服务的启动/停止
对于其他具有PowerShell的用户,您可以使用以下方法:
get-eventlog -source "Service Control manager" -LogName System | select message, timegenerated, username | Out-GridView
答案 3 :(得分:0)
可能没有办法。您在环境用户处获得的任何常规.NET方式都将返回其服务运行凭据的用户(通常是SYSTEM,LOCAL SERVICE,NETWORK SERVICE等)。
我可能会这样做是轮询系统以查看用户是否已登录,并假设用户已执行此操作。当然,这会折扣系统由于某种原因而关闭的服务(可能是您的服务不会),并且只能在一次登录多个用户的情况下帮助您缩小范围(但是,您可以总是记录它们两个。)
答案 4 :(得分:0)