我有一些用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