none
servicecontroller 無法停止或啟動服務的權限問題 RRS feed

  • 問題

  • 我有個service名字叫"serviceA",我只是要做個簡單的stop這個serviceA,但就會有例外的狀況
    code如下:
    ServiceController service = new ServiceController("serviceA");
    service.stop() //這裡就跳出例外,確定此時serviceA是啟動的
    例外的訊息:無法停止serviceA服務 (於電腦"."上)

    我碰到的問題,國外也有同樣的,但似乎也沒有看到解
    http://social.msdn.microsoft.com/Forums/en-US/clr/thread/18c34a5c-8637-4e85-b9ee-d9052bb12a34

    也有查了一些資料,是說可以利用ServiceControllerPermission來做,但是一直找不到範例
    不知道版友們,有沒有範例或是設定service權限的解,謝謝
    2010年3月12日 上午 11:45

解答

  • 我要測試的是趨勢的officescan,在8的版本很正常,在最新版的officescan 10中就不行了

    而且比較一下10這個版本的service後,我發現officescan多了一個叫 "TMBMServer"的service

    好像就是用來限制其它officescan的服務,不能手動停止或啟動。

    這是TMBMServer的說明:Trend Micro Unauthorized Change Prevention Service

    看來真的蠻有可能是officescan在限制住了~需要問問Trend Micro有沒有什麼方式可以改為手動的方式

    謝謝各位的幫忙。

    • 已標示為解答 Lolota Lee 2010年3月18日 上午 06:27
    2010年3月16日 上午 04:58

所有回覆

  • hi
    停用本機服務可以參考ServiceController.Stop 方法範例,以系統管理員身分執行即可。
    停用遠端服務可參考Win32_Service Class

    至於ServiceControllerPermission可參考這篇討論

    programmatically kill a process in vista/windows 7 in C#


    對了,確定ServiceName正確嗎?
    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2010年3月12日 下午 02:03
  • 請在 [控制台]-->[服務]中確認服務名稱的確為 "serviceA"
    在程式中可以用
    service.Status.Equals(ServiceControllerStatus.Running) 判斷其是否為運行中的service
    還有, 你的作業系統是 ?
    MSDN 文件庫很重要
    問題本身越具體, 越容易得到大家的回應
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    2010年3月12日 下午 03:41
    版主
  • 有,我有用ServiceControllerStatus.Running及ServiceControllerStatus.Stopped來確定是否為啟動或停止

    也確定服務的名稱是正確的,但我發現一個很怪的地方,我需要停止的那個服務

    無法在控制台-->系統管理工具-->服務 中,手動去停止。

    也就是說,服務視窗中上方的 「開始、停止、暫停、重新啟動」這四個按鈕是反白的,無法讓我點選

    會不會就是因為這個造成程式在停止或啟動有例外?

    但服務視窗中的其它服務(如telnet)是可以正常利用上方的按鈕停止和啟動的

    另外也測試將程式碼中的serivceA換成telnet,是可以run的。所以會不會是這個服務的問題?

    我要停的這個服務是防毒軟體的服務(所以是防毒程式不給停?),我的OS為XP SP3

    再次感謝各位先進。
    2010年3月15日 上午 06:13
  • 你得先確定為什麼該服務無法去手動停止(安裝帳號和執行帳號不同??)
    不然把防毒軟體重新安裝,安裝過程應該會有一個選項(for any user),安裝成功後再測試相關服務能否手動停止,
    ,手動可以的話那程式也應該沒問題,我測試nod32和小紅傘都是可以的(os:win7)
    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2010年3月15日 下午 02:03
  • 我要測試的是趨勢的officescan,在8的版本很正常,在最新版的officescan 10中就不行了

    而且比較一下10這個版本的service後,我發現officescan多了一個叫 "TMBMServer"的service

    好像就是用來限制其它officescan的服務,不能手動停止或啟動。

    這是TMBMServer的說明:Trend Micro Unauthorized Change Prevention Service

    看來真的蠻有可能是officescan在限制住了~需要問問Trend Micro有沒有什麼方式可以改為手動的方式

    謝謝各位的幫忙。

    • 已標示為解答 Lolota Lee 2010年3月18日 上午 06:27
    2010年3月16日 上午 04:58