我注意到,「sc刪除ServiceKeyName」將不起作用,如果services.mmc是打開的。它標誌着它的刪除(無論如何!這只是意味着它不會做我想要的,就我而言)。其實**刪除**服務,而services.msc是開放的
我的問題是:有沒有一種方法來刪除一個服務,無論services.mmc是否打開都可以工作?或者我應該確保在嘗試刪除之前關閉了services.mmc的任何實例?
我在找到使用DeleteService函數
http://msdn.microsoft.com/en-us/library/ms682562%28v=VS.85%29.aspx
http://msdn.microsoft.com/en-us/library/ms682571%28v=VS.85%29.aspx
但它也關閉手柄和類似的藉口,爲什麼它不能做什麼用戶已經要求立即進行會談。因此,如果DeleteService將要求services.mmc關閉,那麼我將堅持sc delete並殺死services.mmc上的進程,而不是實現DeleteService。我想要一個方法來做它做廣告的方法(沒有任何藉口 - 不要等待任何東西)。
我們隨時拆卸服務(在我們的套件版本之間切換),並打開services.mmc。還沒有研究過DeleteService,但我認爲它確實只是一個首先停止服務的問題。 –
嗨Marjan,哦,我們也停止了服務,但是您使用哪種方法來阻止它們(「sc stop」或ControlService(..,SERVICE_CONTROL_STOP,..),並且在卸載服務之後是否有延遲(例如睡眠(3000))或者你立即執行重新安裝? – Sam
呃,我們通過services.mmc或者通過一個net stop命令來停止它們。我們使用新的exe文件重新安裝,它識別/ reinstall命令行參數(vs install或者卸載)。重新安裝會執行卸載/安裝順序,歸結爲OpenService/DeleteService,然後是CreateService,因此它非常直接:-)。 –