2009-07-21 48 views
1

是的,我可以谷歌,但我有點懶。我需要遠程控制另一臺機器上的Windows服務。 ServiceController類是否允許我這樣做?那裏有什麼限制?我是否可以遠程啓動/停止/更改「運行方式」詳細信息,即更改由於過期而導致的密碼?.Net類來控制遠程機器上的服務?

我將試圖給用戶在工作中ASP.Net網站的儀表板來控制自己的賬戶來(他們自己的機器上的所有本地管理員)的本地計算機上運行的若干服務。這與其他功能集成在一起,所以我沒有考慮創建可以在本地運行的可分發組件。將使用Windows身份驗證並模擬用戶進行更改。如果有什麼問題可能會遇到什麼問題?

乾杯

回答

8
var sc = new ServiceController("servicename", "othermachinename"); 

運行的代碼需要爲了與服務交互的目標計算機上的管理權限的帳戶。冒充將起作用。我只在相當嚴格控制的情況下使用它(即從源/目標機器上的憑據相同的用戶帳戶運行),但根據我的經驗,所有操作都按預期工作。

如果你想改變服務憑證等,你將不得不使用WMI--這不像使用ServiceController類那麼簡單。有關更多信息,請參閱ManagementObject類。

我發現this link描述了使用WMI來更改服務憑證。

+0

+1我也使用這個;將其包裝到控制檯應用程序中,以便我可以使用`runas`在給定用戶帳戶的遠程計算機上啓動/停止服務。 – 2009-07-21 14:25:42

0

@MadSeb -

正如我所說的,我other post

如果你使用C#或VB.Net,然後用WMI

否則, 「SC」 可能是最好的工具從命令行或.bat文件使用。