2009-01-30 96 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. 再次嘗試啓動您的服務,並從事件查看器中看到的是確切的原因在「常規」選項卡中短暫停留。
相關問題